c - 如何在不使用 c 中的 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/

相关文章:

计算 C 成绩的平均值

c - 在 C 中除以宏定义的 int 得到奇怪的结果

c - C 7 中意外标记 '(' 附近的语法错误

c - 如何将逗号分隔字符串中的字段解析为 C 中的整数数组?

c - STM32CubeIDE 在地址 "xxx"处中断,没有可用的调试信息,或在程序代码之外

c++ - 如何在 Windows 7 上获取 gethostid 行为?

c - 从文本文件中读取并存储在二维数组中

c++ - 在 Windows 上用 C++ 打开文件的不同方法?

代码块调试问题

c - InfixToPostfix 代码 C