【发布时间】:2020-03-19 16:46:55
【问题描述】:
malloc 没有对应的free 是否总是会产生内存泄漏,或者是否存在不会产生内存泄漏的情况?
【问题讨论】:
-
无论您是否需要,内存都会保持分配状态,直到它被释放。但是您不需要在源代码中它们之间存在 1:1 的对应关系,只要您分配的所有内容都被释放(例如,
malloc和free可以在不同的函数中,或者一个free行可以执行多次以释放分配在代码不同部分的多个块等)。此外,当程序退出时,仍然分配的任何东西通常都会被释放。 -
基本上,运行时对
malloc等的调用次数应该与对free的调用次数匹配,但不一定与源中出现的次数匹配。 -
realloc(malloc(1000),0)可以在没有free()的情况下释放分配的内存。
标签: c memory-leaks malloc free