【发布时间】:2017-01-31 08:32:39
【问题描述】:
我有这个程序,它通过指向内存区域(结构、数组)的指针在内存中存储大量内容,并且这个用户可以随时启动程序。在初始化时,程序需要释放以前使用的内存(如果有的话,这就是问题所在)并分配可能不同大小的新存储。
现在在第一次初始化时,我不知道我的指针指向什么:特别是,我不知道它们是否是垃圾。然而,如果他们不是,我需要释放他们指向的东西。我怎么知道?
【问题讨论】:
-
你根本做不到。
-
@George 我很害怕。一个想法突然出现在我的脑海中:将第一个 init 与只有 mallocing 而没有释放 - 因为系统刚刚启动,这是第一次也是所有 - 与我将称为“reinits”并且知道它们来的进一步的 init 分开在之前的 malloc 之后,他们可以再次释放指针和 malloc 后面的内容。 Stackoverflow 有时会通过灵感而不是其他人来提供答案......
-
您必须对指针进行“簿记”。每当不再需要某些东西时,释放它并将指针设置为空。然后在你初始化时,任何不为 null 的都是必须释放的有效指针。
-
不要忘记使用 purify 等工具验证您的程序是否存在内存泄漏。
-
有一个简单的规则:你需要释放你分配的东西。如果您有一个指针,但您不知道它是否有效,那么您的程序中存在严重的设计错误。