PDA

Visualizza la versione completa : [C] Malloc o Calloc ???


kNemo
14-04-2004, 11:24
1. Che differenze ci sono tra Malloc e Calloc ???
2. Quando si Usa Malloc e quando si usa Calloc ???

Luc@s
14-04-2004, 12:10
1. Che differenze ci sono tra Malloc e Calloc ???
Malloc alloca e basta.
Calloc alloca e imposta tutto a 0
2. Quando si Usa Malloc e quando si usa Calloc ???
Calloc la usi quando vuoi essere sicuro di avere i dati a 0.
Se no usi malloc+memset.
Cmq ti allego un mio wrapper di calloc/malloc e free che ho studiato in base a quello che dice il manuale delle GNU libc


/* Name: xmalloc.h
* Description: This is a wrappers for the ANSI/ISO function malloc, realloc and free
* Autor: Kleidemos
* Date : 12/04/2004
*/

#include <malloc.h>

void *xmalloc(size_t);
void *xrealloc (void *, size_t );
void xfree(void *);

void *xmalloc(size_t size)
{
register void *value = malloc(size);
if (value == 0)
puts("Memory exhausted to use xmalloc()\n");
return value;
}

void *xrealloc(void *ptr, size_t size)
{
register void *value = realloc (ptr, size);
if (value == 0)
puts("Memory exhausted to use xrealloc()\n");
return value;
}

void xfree(void *ptr)
{
free(ptr);
}

kNemo
14-04-2004, 12:13
Grazie Mille...

infinitejustice
14-04-2004, 13:10
in realta c'è anche un'altra differenza

malloc alloca un'area unica grande n*sizeof(qualcosa)
calloc alloca n spazi singoli, ciascuno grande sizeof(qualcosa)


in pratica nn si sente molto questa differenza :)

^Jack_Sparrow^
14-04-2004, 13:27
Io spesso uso malloc così:


variabile = (tipo *)malloc(sizeof(tipo));

non specifico n*sizeof(tipo)!!!

Questo per motivi di dinamicità!!! Non so mai quanti elementi allocare quindi anche se quello che sto creando è un vettore (che di solito vuole la sua dimensione) utilizzo la bella proprietà della lista che non ha "limite" di grandezza!!!

Loading