answersLogoWhite

0

What is malloc vs calloc?

Updated: 8/9/2023
User Avatar

Wiki User

13y ago

Best Answer

malloc allocate a memory section whereas memset manipulate the content of the memory section, (for example fill a memory section pointed by pointer ptr with 0, we use memset(ptr,0,sizeof(ptr_data_type)) A memory section must be allocated(using either 'malloc' or 'new' in C++) before memset can be used on it.

User Avatar

Wiki User

18y ago
This answer is:
User Avatar
More answers
User Avatar

Wiki User

15y ago

malloc returns a block of memory that is allocated for the programmer to use, but is uninitialized. The memory is usually initialized by hand if necessary -- either via the memsetfunction, or by one or more assignment statements that dereference the pointer. An alternative is to use the calloc function, which allocates memory and then initializes it. The malloc and calloc differs in the number of arguments. The malloc allocates memory of given size but the calloc can allocates array of memory locations of given size.

This answer is:
User Avatar

User Avatar

Wiki User

12y ago

malloc is used to allocate memory for one variable

int* hi = (int*)malloc(sizeof(int)); //allocates the amount of memory an integer needs and casts it to an integer (default returns void*)

calloc is used to allocate memory for an array

int* bye = (int*)calloc(sizeof(int),10); //allocates an array of 10 integers and casts it to an integer pointer

you can access calloc'd variables with []

don't forget to free() your allocated variables or you'll have a memory leak

nothing will happen on modern operating systems but it's a good programming habit

This answer is:
User Avatar

User Avatar

Wiki User

13y ago

The use of malloc and calloc is dynamic memory allocation. malloc allocates memory in bytes whereas calloc allocates memory in blocks. calloc initializes the allocated memory to zero. Both differs in number of arguments also. malloc takes only one argument and allocates the memory in bytes as given in the argument. calloc takes two arguments, number of variables to be allocated and size of each variable. Another difference is how the two functions deal with memory alignment.

Actually malloc allocates a block of size bytes from memory heap. It allows a program

to allocate memory as its needed, and in the exact amount needed . Where as calloc provides access to the C memory heap, which is available for dynamic allocation of

variable-sized block of memory.

Read more: Use_of_malloc_and_calloc

This answer is:
User Avatar

User Avatar

Wiki User

13y ago

Well, free(p) can be substituted with realloc(p,0), so can malloc(n) substituted with realloc(NULL,n)

realloc can reallocate an existing buffer to the new size, too, eg.

int p*, check*;

p = malloc(127);

/* some code */

check = realloc (p, 256);

if (check != NULL)

p = check;

else

/* realloc failed, a fatal error */

exit(0);

/* do some code */

free(p);

free releases the memory that was assigned to p by realloc back into the memory pool so that the memory can be re allocated as necessary.

----------------------------------------

check = realloc (p, 256);

If check is NULL then p should be undisturbed with the data intact, this may not be the case with all compilers especially older ones. An undisturbed p may let your program take some sort of action (saving data) before closing down or indeed carry on with some corrective or alternative action.

If the failure of realloc relay is a fatal error then we can just do

if ((p=realloc (p, 256)== NULL)

exit(0);

This answer is:
User Avatar

User Avatar

Wiki User

12y ago

http://www.diffen.com/difference/Calloc_vs_Malloc

try this. =)

This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: What is malloc vs calloc?
Write your answer...
Submit
Still have questions?
magnify glass
imp
Related questions

What if happen when you allocate memory by using malloc or calloc when the momory is not available contigiously?

malloc/calloc/realloc will return NULL


Which of libraries calloc belongs?

malloc()


What is the difference between Malloc and calloc in C and JAVA?

In C, malloc is used to reserve a predetermined size of memory. void * malloc ( size_t size ); calloc is used to reserve a chunk of memory large enough to store num elements, each of a predetermined size. void * calloc ( size_t num, size_t size ); To create a char array of size 10 you can do it in one of two ways: char* mChars = malloc( 10 * sizeof(char) ); char* cChars = calloc( 10, sizeof(char) ); There is no concept of malloc or calloc in Java.


Contiguous memory allocation program in Linux?

malloc or calloc


In which way calloc is better than malloc?

What calloc does is: void *calloc (size_t s1, size_t s2) { size_t s= s1*s2; void *p= malloc (s); if (p && s) memset (p, 0, s); return p; }


71 Which function should be used to free the memory allocated by calloc?

free() is a function used to free the memory allocated dynamically ,by both malloc and calloc functions. free(ptr): ptr is a pointer to a memory block which has already been creeated by malloc or calloc.


Which function should be used to free the memory allocated by calloc?

Use the free function to release memory that was previously allocated by malloc, calloc or realloc.


What is the operator is used to allocate the memory in c plus plus?

calloc operator,malloc operator


How do you use malloc and calloc to allocate memory for 100 integers?

int *p, *q; p = (int*) malloc (100 * sizeof (int)); q = (int*) calloc (100, sizeof (int)); Note that p is left in an uninitialised state whereas q is initialised with the value zero.


What are the different types of memory allocations in c?

1.malloc 2.calloc 3.realloc 4.free


What is the malloc function?

The malloc function is one of a group of memory allocation functions; malloc, calloc, realloc, and free. Specifically malloc (size) returns a pointer to a new memory block of at least size bytes, suitably aligned for optimum access for any basic type, or it returns a NULL if the request cannot be satisfied.


Difference beween calloc malloc and realloc?

There are two differences. First, is in the number of arguments. Malloc() takes a single argument (memory required in bytes), while calloc() needs two arguments (number of variables to allocate memory, size in bytes of a single variable). Secondly, malloc() does not initialize the memory allocated, while calloc() initializes the allocated memory to ZERO.Here are more opinions and answers from FAQ Farmers:The difference between malloc and calloc are: 1. malloc() allocates byte of memory, whereas calloc()allocates block of memory.Calloc(m, n) is essentially equivalent to p = m*malloc(n); memset(p, 0, m * n); The zero fill is all-bits-zero, and does not therefore guarantee useful null pointer values (see section 5 of this list) or floating-point zero values. Free is properly used to free the memory allocated by calloc.Malloc(s); returns a pointer for enough storage for an object of s bytes. Calloc(n,s); returns a pointer for enough contiguous storage for n objects, each of s bytes. The storage is all initialized to zeros.Simply, malloc takes a single argument and allocates bytes of memory as per the argument taken during its invocation. Where as calloc takes two aguments, they are the number of variables to be created and the capacity of each vaiable (i.e. the bytes per variable).This one is false:I think calloc can allocate and initialize memory, if the asked memory is available contiguously where as malloc can allocate even if the memory is not available contiguously but available at different locations.malloc will allocate a block of memoryrealloc will resize a block of memory// allocate a pointer to a block of memory to hold 10 intsint *intArray = malloc(10 * sizeof(int));// change intArray to hold 15 intsintArray = realloc(15 * sizeof(int));