calloc idiocy
Posted Aug 14, 2005 2:50 UTC (Sun) by
giraffedata (subscriber, #1954)
In reply to:
calloc idiocy by chad.netzer
Parent article:
kzalloc()
I think you missed the fundamental distinction of calloc() from malloc(). The difference in how you specify the size is incidental. The reason calloc() exists is that it allocates memory that is set to zero ("c" is for "clear"), whereas malloc() allocates memory with arbitrary contents.
I'm not sure my macro example really did get garbled. It looks fine on my screen, but does look a little funny because I tried to be consistent with the earlier example that used a one-character type name. Let me try again:
struct foo * arrayOfFooStructs;
MALLOCARRAY(arrayOfFooStructs, 4);
It's supposed to be two lines. The first one declares an array variable (technically a pointer, but practically an array) and the second allocates space for a 4-element array and assigns its address to that pointer. I.e. it instantiates the array.
I have seen people use special "multiply and malloc" routines in order to deal with the arithmetic overflow while not taking the time to clear the memory as with calloc(). Also, these routines sometimes multiply more than two numbers together to get the size.
(
Log in to post comments)