malloc和realloc
时间: 2023-10-29 19:00:18 浏览: 107
malloc和realloc是C语言中用于动态内存分配的函数。
malloc函数用于分配指定大小的内存空间,并返回一个指向该内存空间的指针。它的原型如下:
void* malloc(size_t size);
realloc函数用于重新分配已经分配的内存空间的大小。它接受两个参数,第一个参数是指向已经分配内存的指针,第二个参数是新的内存大小。如果新的内存大小大于原来分配的大小,那么realloc会扩大内存空间;如果新的内存大小小于原来分配的大小,那么realloc会缩小内存空间。它的原型如下:
void* realloc(void* ptr, size_t size);
与calloc函数相比,malloc和realloc不会对分配的内存进行初始化,而是返回一块未初始化的内存空间。而calloc函数在分配内存之前会将每个字节初始化为0。因此,在使用malloc和realloc分配的内存空间之前,我们需要手动对其进行初始化。
下面是一个使用malloc和realloc的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int* p1 = malloc(10 * sizeof(int));
if (p1 != NULL) {
// 使用空间
}
int* p2 = realloc(p1, 20 * sizeof(int));
if (p2 != NULL) {
// 使用空间
}
free(p2);
p2 = NULL;
return 0;
}
```
在这个示例中,首先使用malloc函数分配了一块大小为10个int类型的内存空间,然后使用realloc函数将其扩大为20个int类型的内存空间。最后,使用free函数释放了已经分配的内存空间。
总结起来,malloc和realloc函数用于动态分配内存空间,而calloc函数在分配内存之前会将每个字节初始化为0。根据具体的需求,选择合适的函数来进行内存分配。
阅读全文