c - 使用 realloc 缩小分配的内存

标签 c memory-management realloc

关于C中realloc函数的简单问题: 如果我使用 realloc 来缩小指针指向的内存块,“额外”内存是否会被释放?还是需要以某种方式手动释放它?

例如,如果我这样做

int *myPointer = malloc(100*sizeof(int));
myPointer = realloc(myPointer,50*sizeof(int));
free(myPointer);

我会不会有内存泄漏?

最佳答案

不,你不会有内存泄漏。 realloc 将简单地将其余部分标记为“可用”以供将来的 malloc 操作使用。

但是您稍后仍然需要free myPointer。顺便说一句,如果您使用 0 作为 realloc 中的大小,它将与 free 具有相同的效果 在某些实现。正如 Steve Jessop 和 R.. 在评论中所说,你不应该依赖它。

关于c - 使用 realloc 缩小分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078019/

相关文章:

c - realloc 收缩失败

c - 循环调用realloc的缺点

c - 如何在 C 中获取数组的下一个元素?

c - BSD getmicrotime() 输出到 Excel 日期

c - 位域和 union -C中的意外结果

c - 查找字符串中的公共(public)字符

c++ - 无序、固定大小的基于内存池的频繁插入和删除的容器

c - c中共享内存的重新分配

linux - 我不明白高级内存的概念,我想了解一下

c++ - 我可以防止在重载删除之前调用析构函数吗?