gRoOvE 0 Denunciar post Postado Julho 19, 2008 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. Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Julho 19, 2008 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. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Julho 19, 2008 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... Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Julho 19, 2008 aff, agora que intendi, sempre que usar calloc, vou perder o valor dos elementos entao neh? Pode dar um exemplo Kandrade? Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Julho 20, 2008 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? Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Julho 20, 2008 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?? Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Julho 20, 2008 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 Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Julho 20, 2008 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? Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Julho 20, 2008 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? Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Julho 20, 2008 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? Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Julho 21, 2008 vlw brother, entendi, boas explicações :D Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Julho 21, 2008 Foi nada. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif vlw brother, entendi, boas explicações :D Compartilhar este post Link para o post Compartilhar em outros sites