我们在一个工作区中有一个带有2个项目的iOS应用程序。 我们有一个奇怪的内存泄漏: 如果我们在第二个项目中使用删除器创建boost :: shared_ptr并在模拟器上启动应用程序 - 从不调用删除器。 设备上的相同代码工作正常。 从主项目调用相同的代码 - 在模拟器上正常工作。
有谁知道如何处理这个问题?我很感激任何想法。
项目v1.55中的PS boost版本,用于boost版本使用https://github.com/mgrebenets/boost-xcode5-iosx
的修改版本PPS如果能够更好地解释这种情况:我们已经使用许多代码多次检查过这种情况。最后的测试是调用boost :: shared_ptr sp(new int [10],[](int * p){printf(“Deleted \ n”); delete [] p;});来自项目的不同部分。结果行为在问题开头描述。
答案 0 :(得分:1)
回答我自己的问题: 我找到了下一个解决方法:
转到Xcode 7.0
使用" -mios-version-min = 7.0"重建提升。根据{{3}}
内存泄漏消失了。
答案 1 :(得分:0)
PPS:
你看起来像是
#include <boost/shared_ptr.hpp>
int main()
{
boost::shared_ptr sp( new int[10], []( int *p ) { printf("Deleted\n"); delete[] p; } );
}
会出现问题(你试过吗?)。
假设是这种情况,返回的问题是:“你怎么知道它没有被删除?”。
很可能,项目只是配置为非控制台类型的可执行文件,或者是控制台输出未显示的其他原因。
答案 2 :(得分:0)
是的,你需要使用Xcode 7以来的目标系统构建它。
我有一个已预先构建的库: https://github.com/danoli3/ofxiOSBoost
支持Xcode 7
<强> ofxiOSBoost 强>