【发布时间】:2011-12-04 02:54:12
【问题描述】:
我在某处读到使用相同的指针参数调用 free 两次会导致未定义的行为。那么 free 如何知道它需要释放多少内存呢?当我们调用 malloc/calloc/realloc 时,堆是否总是分配连续的内存?请提供相关文章/帖子/博客等的链接。
【问题讨论】:
-
你不需要知道免费是如何工作的就可以理解这一点。只要您记得在指针上调用 free 之后,您就不再拥有该位置的内存。尝试访问它,你会受到惩罚。
-
@WTP:我只是好奇它是如何工作的。
-
也许你应该改变你的问题,说你想知道 malloc/free 是如何实现的。 “为了理解这一点,我必须首先了解免费的工作原理”这句话具有误导性。
-
这不是 完全 一个重复,所以我不会投票结束,但之前关于 SO 的答案可能会回答你的很多问题:stackoverflow.com/questions/1119134/how-do-malloc-and-free-work
标签: c memory-management