Both the malloc() and the calloc() functions are used to allocate dynamic memory. Each operates slightly different from the other. malloc() takes a size and returns a pointer to a chunk of memory at least that big: void *malloc( size_t size ); calloc() takes a number of elements, and the size of each, and returns a pointer to a chunk of memory at least big enough to hold them all: void *calloc( size_t numElements, size_t sizeOfElement ); There's one major difference and one minor difference between the two functions. The major difference is that malloc() doesn't initialize the allocated memory. The first time malloc() gives you a particular chunk of memory, the memory might be full of zeros. If memory has been allocated, freed, and reallocated, it probably has whatever junk was left in it. That means, unfortunately, that a program might run in simple cases (when memory is never reallocated) but break when used harder (and when memory is reused). calloc() fills the allocated memory with all zero bits. That means that anything there you're going to use as a char or an int of any length, signed or unsigned, is guaranteed to be zero. Anything you're going to use as a pointer is set to all zero bits. That's usually a null pointer, but its not guaranteed. Anything you're going to use as a float or double is set to all zero bits; that's a floating-point zero on some types of machines, but not on all. The minor difference between the two is that calloc() returns an array of objects; malloc() returns one object. Some people use calloc() to make clear that they want an array.
C
Topic: Memory Allocation
Is it better to use malloc() or calloc()?
Browse random answers:
what is Memory Allocation?
What is the heap?
Difference between calloc and malloc ?
Why does malloc(0) return valid memory address ? What's the use ?
How can you determine the size of an allocated portion of memory?
What are advantages and disadvantages of external storage class?
What is the purpose of realloc( )?
Difference between calloc() and malloc()?
What is the difference between new/delete and malloc/free?
What?s wrong with this code?Char*p*p=malloc(10);
Is it better to use malloc() or calloc()?
Why do we need to test weather it is memory leak or not? How are we going to know that?
what is the difference between the functions memmove() and memcpy()?
How to write calloc() in terms of malloc()? ie malloc() should initialise the memory to zero after allocating it ?
when should the volatile modifier be used?
How can you determine the size of an allocated portion of memory ?
when memory will be created after defining in c and c++;
What is static memory allocation and dynamic memory allocation?
What?s wrong with this code?Char*p*p=malloc(10);
How can you determine the size of an allocated portion of memory ?
Difference between malloc and calloc?
What is the difference between calloc() and malloc() ?
What are the differences between formal arguments and actual arguments?
What is static memory allocation and dynamic memory allocation?
What is difference between template and macro?
How do I compare character data stored at two different memory locations?
How do I compare character data stored at two different memory locations?
What are memory models?
How to get the memory size ?
How to use realloc() to dynamically increase size of an already allocated array?
How do I write code that reads data at memory location specified by segment and offset?
How do I compare character data stored at two different memory locations?