在C++中替换malloc
时间: 2024-03-22 13:15:01 浏览: 89
在C中,可以使用calloc()和realloc()函数替代malloc()函数。
calloc()函数用于分配指定数量和大小的连续内存块,并将内存块的每个字节都初始化为0。
realloc()函数用于重新分配已分配的内存块的大小。如果内存块已经分配,则realloc()将扩展或收缩内存块,如果内存块未被分配,则realloc()的行为类似于malloc()函数。
以下是使用calloc()和realloc()函数分配内存的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *ptr1, *ptr2;
int n = 5, i;
// 使用calloc()函数分配内存
ptr1 = (int*)calloc(n, sizeof(int));
if (ptr1 == NULL) {
printf("内存分配失败");
exit(0);
}
// 使用realloc()函数重新分配内存
n = 10;
ptr2 = (int*)realloc(ptr1, n * sizeof(int));
if (ptr2 == NULL) {
printf("内存分配失败");
exit(0);
}
// 输出分配的内存地址
printf("分配的内存地址:\n");
for (i = 0; i < n; i++) {
printf("%p\n", &ptr2[i]);
}
// 释放内存
free(ptr2);
return 0;
}
```
阅读全文