Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bem, além do protótipo, encontrei uma característica como diferença entre estas duas funções: "calloc inicializa o espaço alocado com 0".
O que seria isso? Fiz uns testes aqui com as duas e retornam a mesma posição da memória alocada.
Groove, pare um pouco e leia de novo: "calloc inicializa o espaço alocado com 0"
Inicializar o espaco alocado com zero não é a mesma coisa que retornar 0 como endereco de memoria...
aff, agora que intendi, sempre que usar calloc, vou perder o valor dos elementos entao neh?
Pode dar um exemplo Kandrade?
Na teoria antes de usar a variável você aloca um espaço pra ela.
Por isso não terá problema com os elementos.
aff, agora que intendi, sempre que usar calloc, vou perder o valor dos elementos entao neh?
quer exemplo de calloc ou malloc?
Pode dar um exemplo Kandrade?
tipo, calloc vai guardar 20bytes (5 elementos do tipo int) da memória, desses 20bytes, todos os elementos vão ter valor zero?? malloc vai guardar 20bytes da memória, desses 20bytes, todos os elementos vão ter valores aletórios, aqueles que vem do lixo damemória??
Vamos aos exemplos:
Quero alocar espaço para 5 inteiros. Com calloc eu faço:
p = (int *)calloc(5,sizeof(int));
Com malloc eu faço
p = (int )malloc(5 sizeof(int));
Nos dois casos o espaço reservado é o mesmo "em tamanho", não necessariamente alocam o mesmo endereço.
A diferença nesse caso seria o conteúdo que com calloc seria zerado.
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
hehe, os protótipos eu já sabia, mas tirou minha dúvida quanto ao calloc zerado :D
vlws Kandrade
agora te pergunto, qual a diferença entre zerar ou não os elementos?? no que faz diferença isso?
>
A outra diferença é que calloc é usada para alocar memória para array.
Ele aloca um tamanho para cada elemento do array.
como assim, um tamanho para cada elemento?
Voce pode usar para descobrir se algum elemento não foi preenchido ou usar o conteúdo para fazer algum teste, mas de qualquer forma voce poderia zerar os elementos alocados do malloc também. A vantagem é que se um dia voce precisar zerar os elementos o calloc já faz pra voce e com malloc voce teria que fazer algumas linhas de código.
>
hehe, os protótipos eu já sabia, mas tirou minha dúvida quanto ao calloc zerado :D
vlws Kandrade
agora te pergunto, qual a diferença entre zerar ou não os elementos?? no que faz diferença isso?
Voltando ao exemplo:
p = (int *)calloc(5,sizeof(int));
É alocado um tamanho de inteiro 5 vezes, ou seja, terei 5 tamanhos de inteiros alocado.
omo assim, um tamanho para cada elemento?
vlw brother, entendi, boas explicações :D
Foi nada.
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
vlw brother, entendi, boas explicações :D
As duas alocam memória.
Uma das diferenças voce já percebeu: calloc zera o conteúdo da memória alocada e malloc não.
A outra diferença é que calloc é usada para alocar memória para array.
Ele aloca um tamanho para cada elemento do array.