Defined in header <stdlib.h> | ||
void*malloc(size_t size); | ||
Allocatessize bytes of uninitialized storage.
If allocation succeeds, returns a pointer that is suitably aligned for any object type withfundamental alignment.
Ifsize is zero, the behavior ofmalloc is implementation-defined. For example, a null pointer may be returned. Alternatively, a non-null pointer may be returned; but such a pointer should not bedereferenced, and should be passed tofree to avoid memory leaks.
A previous call tofree,free_sized, andfree_aligned_sized(since C23) orrealloc that deallocates a region of memorysynchronizes-with a call to | (since C11) |
Contents |
| size | - | number of bytes to allocate |
On success, returns the pointer to the beginning of newly allocated memory. To avoid a memory leak, the returned pointer must be deallocated withfree() orrealloc().
On failure, returns a null pointer.
#include <stdio.h>#include <stdlib.h> int main(void){int*p1= malloc(4*sizeof(int));// allocates enough for an array of 4 intint*p2= malloc(sizeof(int[4]));// same, naming the type directlyint*p3= malloc(4*sizeof*p3);// same, without repeating the type name if(p1){for(int n=0; n<4;++n)// populate the array p1[n]= n*n;for(int n=0; n<4;++n)// print it back outprintf("p1[%d] == %d\n", n, p1[n]);} free(p1);free(p2);free(p3);}
Output:
p1[0] == 0p1[1] == 1p1[2] == 4p1[3] == 9
| deallocates previously allocated memory (function)[edit] | |
C++ documentation formalloc | |