<分区>
int main(void)
{
int *a = malloc(10);
return 0;
}
如何在不使用 free()
的情况下释放内存?
标签 c
<分区>
int main(void)
{
int *a = malloc(10);
return 0;
}
如何在不使用 free()
的情况下释放内存?
最佳答案
来自手册页:
realloc()函数将ptr指向的内存块的大小更改为size bytes。从区域开始的范围内内容将保持不变 直到旧尺寸和新尺寸中的最小值。如果新大小大于旧大小,则不会初始化添加的内存。如果 ptr 为 NULL,则调用是 对于大小的所有值,等同于 malloc(size);如果 size 等于零,并且 ptr 不为 NULL,则调用等同于 free(ptr)。除非 ptr 为 NULL,否则 必须由先前调用 malloc()、calloc() 或 realloc() 返回。如果指向的区域被移动,则完成 free(ptr)。
因此,您需要调用大小为 0 的 realloc()。
realloc(a, 0);
关于c - 如何在不使用 c 中的 free() 的情况下释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9084201/