malloc、calloc和realloc的区别
1.malloc函数
使用方法:参数是所需申请的内存块的字节数,返回指向申请的内存块的首地址的无类型指针,malloc申请的内存块是未初始化的。
函数原型:
void* malloc(size_t num_size);//num_size = 需要申请的字节数
使用案例:
int* p = (int*) malloc(10*sizeof(int));//申请10个int类型大小(40)字节的内存块。
2.calloc函数
使用方法:参数是内存块所存元素的个数和内存块所存元素的字节大小,返回指向申请的内存块的首地址的无类型指针,calloc申请的内存块内每个字节都初始化为0。
函数原型:
void* calloc(size_t elem_num, size_t elem_size);
使用案例:
int* p = (int*)calloc(10, sizeof(int));
3.realloc函数
使用方法:用于扩充内存时,重新分配内存,会将原内存的内容复制到新内存中,参数是指向原内存块首地址的指针和新内存块的字节数,返回新内存块首地址的无类型指针。
函数原型:
void* realloc(void *p, size_t new_size);
使用案例:
int* p = (int*) malloc(100 * sizeof(int)); int* new_p = (int*) realloc(p, 1000);