Register now or log in to join your professional community.
Sorry I'm not professional in Java language,Thank you for invitation
or:
ptr =(char**) calloc (MAXELEMS,sizeof(char*));When is it a good idea to use calloc over malloc or vice versa?
c malloc calloc
Zeroing out the memory may take a little time, so you probably want to use malloc() if that performance is an issue. If initializing the memory is more important, use calloc(). For example, calloc() might save you a call to memset().
Why would one use realloc() function to resize an dynamically allocated array rather than using free() function before calling the malloc() function again (i.e. pros and cons, advantages vs. disadvantages, etc.)? It's for C programming, but I can't find the proper tag for it. Thanks in advance.
The advantage is that realloc will preserve the contents of the memory. With free + malloc you'd need to reset the data in the array.
Zeroing out the memory may take a little time, so you probably want to use malloc() if that performance is an issue. If initializing the memory is more important, use calloc(). For example, calloc() might save you a call to memset().
Why would one use realloc() function to resize an dynamically allocated array rather than using free() function before calling the malloc() function again (i.e. pros and cons, advantages vs. disadvantages, etc.)? It's for C programming, but I can't find the proper tag for it. Thanks in advance.
These functions use in the C language not in c#
In short basic difference is that
malloc is used to allocate memory.
calloc is allocating memory as well as initializing it.
realloc is used to make change in already allocated memory without loosing stored info.
Normally C# doesn't need such things .Net has its own memory management and only new operator is needed to manage memory. But in very special cases you can you Marshal class to manage memory like Marshal.AllocHGlobal[^] and Marshal.FreeHGlobal[^]
1 MALLOC()void *malloc(size_t size);size_t corresponds to the integral data type returned by the language operator sizeof and is used to represent the size (in bytes) of an object. It is defined (In string.h header in C language andheader in C++) as an unsigned integral type. It is just an indication that the type is used to hold number of memory bytes (and not usual unsigned int).2.CALLOC() Calloc also allocates memory on heap like malloc does. The only difference is that calloc also initialize the memory with zero (malloc returns uninitialized memory).3. REALLOC()Realloc (change the size of memory block on heap)Suppose a pointer (say ptr) is pointing to a memory of int on heap allocated using malloc as below. int * ptr = (int*)malloc(*sizeof(int));You want to increase the size of memory pointed to by ptr from to, without loosing the contents of already allocated memory. In this case you can call the realloc function.
These3 functions are used in C for dynamically allocating memory.malloc () function is used to allocate space in memory during the execution of the program.It does not initialize the memory allocated during execution. It carries garbage value.malloc() function returns null pointer if it couldn't able to allocate the requested memory
calloc () function is also like malloc () function. But calloc () initializes the allocated memory to zero. But, malloc() doesn’t
realloc() modify the allocated memory size by malloc() and calloc() new size
If enough space doesn’t exist in memory of current block to extend, new block is allocated for the full size of reallocation, then copies the existing data to new block and then frees the old block
except for the stack alloc operator,c# provides no predefined constructs for managing non-garbage collected memory
malloc initaillize memory of int,and calloc does the same but it initilaize memory with zero..and relloc also initialize memory with zero in array element
Both malloc, realloc and calloc are used in C/C++ language for dynamic memory allocation where they obtain blocks of memory dynamically. Realloc is used to resize the memory allocated earlier by function malloc () to a new size given by the second parameter of the malloc function.