malloc/calloc/realloc的区别?
时间: 2023-08-05 15:02:36 浏览: 185
malloc、calloc和realloc是C语言中用于动态内存分配的函数。
1. malloc函数用于分配指定大小的内存块,并返回分配的内存块的首地址。它接受一个参数,即要分配的字节数。例如,malloc(10)将分配10个字节的内存块。
2. calloc函数类似于malloc函数,不同之处在于它除了分配指定大小的内存块外,还会将分配的内存块中的每个字节都初始化为零。它接受两个参数,第一个参数是要分配的元素个数,第二个参数是每个元素的大小。例如,calloc(5, sizeof(int))将分配5个int类型大小的内存块,并将每个元素初始化为零。
3. realloc函数用于重新调整之前分配的内存块的大小。它接受两个参数,第一个参数是之前分配的内存块的指针,第二个参数是重新分配的字节数。如果新的字节数大于之前分配的内存块大小,realloc将分配一个新的内存块,并将原始数据复制到新的内存块中。如果新的字节数小于或等于之前分配的内存块大小,realloc将缩小内存块的大小,并返回原始内存块的指针。
总结:
- malloc只负责分配指定大小的内存块。
- calloc在分配内存块的同时,会将每个字节初始化为零。
- realloc可以重新调整之前分配的内存块的大小,包括扩大和缩小,并且可以复制原始数据到新的内存块中。
阅读全文