GabrielCardelli Postado Fevereiro 5, 2009 Denunciar Share Postado Fevereiro 5, 2009 Bom galera eu vendo um tutorial sobre AlocaçãoNo tutorial diz que Malloc pertence a "alloc.h"Porem quando eu include ela.. Diz que não existe no diretorio!!O programa roda normal mais não sei si ele ta alocando memória!!Abaixo o codigo alguém pode me diz se esta correto? E qual biblioteca ela esta? eu uso Devc++#include <stdio.h> #include <stdlib.h> #include <conio.h> int main () { int *p,tnums,count; printf (" Quantos numeros você deseja digitar>: "); scanf ("%d",&tnums); p = (int *) malloc(tnums); for (count=0;count<tnums;count++) { printf (" Digite um numero: "); scanf ("%d",&p[count]); } system ("cls"); for (count=0;count<tnums;count++) { printf (" %d ", p[count]); } getche(); free(p); return (0); }Vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Fevereiro 5, 2009 Denunciar Share Postado Fevereiro 5, 2009 (editado) A função malloc() é uma das que são default pro gcc (imagino que seja esse). Não é obrigatório informar no fonte em qual header está o protótipo. Ademais, se o EXE foi produzido sem erro, é claro que está tudo ok. :)Mas, se precisar informar um diretório para o gcc procurar pelos headers, use o switch -I<path>. Editado Fevereiro 5, 2009 por Maligno Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RSalvador Postado Fevereiro 5, 2009 Denunciar Share Postado Fevereiro 5, 2009 Vários problemas com alocação dinâmica, eu resolvi utilizado malloc(sizeof(variável)). Não seria o caso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Fevereiro 5, 2009 Denunciar Share Postado Fevereiro 5, 2009 Vários problemas com alocação dinâmica, eu resolvi utilizado malloc(sizeof(variável)). Não seria o caso?No caso dele não. Mas especificar o tamanho correto do tipo que será armazenado é uma prática comum e mais acertada. O OP esqueceu disso. Mas ele lembrou da coerção do tipo do ponteiro devolvido. Aí fica garantida que a aritmética de ponteiros será feita corretamente.p = (int*)malloc(sizeof(int)*tnums); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Fevereiro 5, 2009 Autor Denunciar Share Postado Fevereiro 5, 2009 p = (int*)malloc(sizeof(int)*tnums);No Tutorial que eu vi não tinha (sizeof(int)*tnums)alguém explica a finalidade? Abraço!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Fevereiro 6, 2009 Denunciar Share Postado Fevereiro 6, 2009 O operador sizeof() (não é função - é operador) permite saber o tamanho (em bytes) de um determinado tipo de dado, seja um tipo nativo ou criado pelo programador (uma estruct, por exemplo). A função malloc() exige saber a quantidade de bytes que será alocada. Para saber qual a quantidade exata o correto é usar esse operador. Quanto ao retorno, sempre será um ponteiro para char. Mas há compiladores que exigem uma coerção (ou cast), mesmo que seja para o próprio ponteiro default (padrão ANSI).Sinteticamente é isso. Mas o legal é você procurar o help da linguagem pra conhecer os detalhes. Se possível um help que considere o padrão ANSI. Já que C é uma linguagem normatizada, conhecer o padrão ajuda a desenvolver software portável e/ou que funcione em qualquer compilador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Fevereiro 6, 2009 Denunciar Share Postado Fevereiro 6, 2009 Em tempo:Se quiser dar uma olhada na norma, tenho pra download no meu site, além de alguns livros. Da página principal dá pra ir à seção C++, onde também tenho a norma de C++ e mais alguns livros e tutoriais. Tudo em inglês. :)C:http://pub.buzinello.com/index.php?d=./c/tutorials/Home:http://pub.buzinello.com/index.php Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nandopc001 Postado Fevereiro 6, 2009 Denunciar Share Postado Fevereiro 6, 2009 malloc está em stdlib.h Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
GabrielCardelli
Bom galera eu vendo um tutorial sobre Alocação
No tutorial diz que Malloc pertence a "alloc.h"
Porem quando eu include ela.. Diz que não existe no diretorio!!
O programa roda normal mais não sei si ele ta alocando memória!!
Abaixo o codigo alguém pode me diz se esta correto? E qual biblioteca ela esta? eu uso Devc++
Vlw
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.