0

在 XCode 中开发框架时,我遇到了一个不寻常的错误,即每当 XCode 通过“停止”按钮强制退出时,我的应用程序就会泄漏内存。通过仔细使用智能指针,我确定我的框架创建的所有动态内存都已成功从堆中进行垃圾收集。堆栈上的所有类型都有有效的析构函数。

挂断应用程序的那一行是main() 末尾的空引用。据我所知,在那之后没有分配内存,也没有办法让内存泄漏。收到 SIGABRT 信号后,我会点击“停止”,我的错误构建将退出。与一些分析器的检查显示我的 RAM 被吸入稀薄的空气中。

4

1 回答 1

0

关键是在强制退出后重新运行(相同的构建)时弹出的 OSX Lion 的有用窗口。它说的是“你想尝试恢复这个应用程序上次强制退出的窗口吗?”

经过一番挖掘,我发现我的新操作系统升级 (Lion) 已经通过其闪亮的新“恢复 Windows”功能缓存了我的故障应用程序的最后状态。无论我是否恢复了应用程序,状态缓存使用的内存都在堆积。我把它关掉了,现在我没有任何内存泄漏......现在。

我不确定为什么 OSX 会为我的每个构建创建一个新的状态表示。对于我的 /Applications 目录中的其他应用程序,似乎只有一个缓存状态(对于在应用程序退出/强制退出时打开的每个窗口)。但是,似乎正在为 XCode 中的每个构建创建一个新状态。这可能与在 XCode 中标识单个构建的方式有关,或者我可能对整个 OT 完全错误。

于 2013-01-12T11:05:20.603 回答