tag:blogger.com,1999:blog-6926985245178197542.post523134569769100260..comments2024-03-23T15:34:28.415-07:00Comments on C Progressivo: A função malloc - Como alocar memória na linguagem CUnknownnoreply@blogger.comBlogger11125tag:blogger.com,1999:blog-6926985245178197542.post-6679953488956378852019-03-14T17:24:42.845-07:002019-03-14T17:24:42.845-07:00"Não estou conseguindo entender isso, eu ente..."Não estou conseguindo entender isso, eu entendi a sintaxe, e tudo, menos a finalidade, pois como dito, todo exemplo que vejo, presumi o tamanho do campo! Alguém pode me ajudar?" Não está fugindo a lógica do malloc, esta é a logica do malloc. Malloc nesse caso cria um vetor. Ex.: quando usamos int p[3], estamos fazendo um int* p = (p*) malloc(3*sizeof(int)); sobre esse tipo de alocação que deseja pesquisa ""Alocação Dinãmica""..Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-10292702960381246622018-05-29T21:24:43.675-07:002018-05-29T21:24:43.675-07:00Não se usa casting como (char *) no retorno do mal...Não se usa casting como (char *) no retorno do malloc, isso não é necessário e causa erros:<br /><br />O modo correto é:<br /><br />char *nome;<br />nome = malloc(21 * sizeof *nome);<br /><br />Fonte:<br />https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc<br /><br /><br /><br />Também seria bom não usar funções descontinuadas da linguagem num material didático introdutório como a função gets(), que foi retirada do padrão da linguagem por ser uma função não segura.<br /><br />Use outras funções como fgets() ou scanf() para que o aluno pegue boas práticas de programação.isrnicknoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-89507152116859561842018-05-20T06:58:34.367-07:002018-05-20T06:58:34.367-07:00o n na verdade era apenas para quebrar a linha.. o...o n na verdade era apenas para quebrar a linha.. o amigo esqueceu apenas de colocar \nAnonymoushttps://www.blogger.com/profile/17995540313192714598noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-24090805304040965092017-02-04T15:46:47.091-08:002017-02-04T15:46:47.091-08:00eu acho que o numero ali que ja sao inseridos ...d...eu acho que o numero ali que ja sao inseridos ...diz respeito ao maximo de caracterres que pode ser alocado ... mas caso o usuario digite um valor menor de caracteres o sizeoff ira diminuir o tamanho da memoria...acho que e isso ...<br /> Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-87204459891610632016-09-04T13:05:36.291-07:002016-09-04T13:05:36.291-07:00olha, eu acho que esse %sn era pra ser printf(&quo...olha, eu acho que esse %sn era pra ser printf("%s\n",nome);tamyhttps://www.blogger.com/profile/16009576315417695476noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-72599553569788059732016-09-01T09:04:01.959-07:002016-09-01T09:04:01.959-07:00Kissaba.. testei aki o printf("%sn", nom...Kissaba.. testei aki o printf("%sn", nome);<br />e so com o S pegou, acho q é S de string o n é so uma letra normal, até por que quando imprimimos na tela exemplo o nome Ruan fica com o n no final tipo: Ruann<br /><br />portanto acho que é so o S mesmo, do %s.. Anonymoushttps://www.blogger.com/profile/02819694112754999653noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-69915812522515124962016-08-29T07:41:19.059-07:002016-08-29T07:41:19.059-07:00Não faz sentido! veja bem, entendi que a principal...Não faz sentido! veja bem, entendi que a principal ideia do uso malloc ou calloc, seria a de liberar uma memoria "expansiva" correto?, como no caso do cadastro de um nome completo, como não temos como saber a quantidade de caracteres, nós criamos o malloc, dessa forma, o campo ira se ajustar ao tamanho exato digitado pelo usuário, correto?<br /><br />Mas em todo vídeo que vejo, o professor insere a quantidade de bytes, mas pq isso? se vc insere a quantidade de bytes, vc esta prevendo a quantidade de caracteres, fugindo de toda lógica do malloc.<br /><br />Todo vídeo, se usa a seguinte sintaxe: char *nome_do_cliente = (char *) malloc(10*sizeof(char));<br /><br />Mas veja bem, se eu coloco 10* ali, eu estou presumindo o tamanho! não faz sentido! o correto não deveria ser: char *nome_do_cliente = (char *) malloc(sizeof(nome_do_cliente));<br /><br />de forma que ele pegue o tamanho alocado no nome_do_cliente, ao passo que o campo é preenchido?<br /><br />Não estou conseguindo entender isso, eu entendi a sintaxe, e tudo, menos a finalidade, pois como dito, todo exemplo que vejo, presumi o tamanho do campo! Alguém pode me ajudar?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-23521912989682845092015-12-19T05:09:44.229-08:002015-12-19T05:09:44.229-08:00Olá, só uma dúvida, na parte que fala sobre o caso...Olá, só uma dúvida, na parte que fala sobre o caso de alocarmos uma string com 20 caracteres tem o trecho de código.<br /><br />printf("%sn", nome);<br /><br />essse SN existe? ou só seria printf("%s", nome); ???Kissabahttps://www.blogger.com/profile/07101930318962227380noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-33048832649481124002014-02-19T09:05:57.236-08:002014-02-19T09:05:57.236-08:00Respondendo a pergunta do amigo. o austerístico se...Respondendo a pergunta do amigo. o austerístico se deve ao fato de a função malloc() retorna um ponteiro, isto é, o endereço de memória do primeiro elemento alocado. Nos protótipos de funções, quando aparecer o "*" ante de qualquer elemento, significa que ele é um ponteiro ou retorna um endereço.Anonymoushttps://www.blogger.com/profile/09941034003826507053noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-9695114989558449992013-12-30T14:46:06.715-08:002013-12-30T14:46:06.715-08:00parabéns,,,bem explicado,pois não só joga o assunt...parabéns,,,bem explicado,pois não só joga o assunto para vc estudar..tem também o motivo e o porque de usar tal função...obs: eu sou o dois anônimos de cima)Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-15979634600287938862013-12-30T14:39:25.732-08:002013-12-30T14:39:25.732-08:00na parte: void *malloc(size_t numero_de_bytes); ...na parte: void *malloc(size_t numero_de_bytes); porque tem o esterisco em "malloc"? é um ponteiro?Anonymousnoreply@blogger.com