Xcode中 - 如何使用仪器(泄漏)找到C或C ++代码泄漏?(How to find C or

2019-08-16 21:18发布

int* foo = new int[10];
foo = NULL;
sleep(60);

仪器没有发现在上面的代码中任何泄漏,如何使用仪器工具查找C或C ++代码泄漏。 我已经堆栈溢出大部分的解释是基于Objective C的代码...

Answer 1:

问题是,编译器将优化出调用new在下面的代码片段:

int* foo = new int[10];
foo = NULL;
sleep(60);

因为它是足够聪明,知道它没有被使用。 如果您添加代码,使用foo则编译器将无法做到这一点,你应该看到您所期待的泄漏:

int* foo = new int[10];

foo[3] = 23;
foo[8] = 45;

printf("%d %d\n", foo[3], foo[8]);

foo = NULL;
sleep(60);


文章来源: How to find C or C++ code leaks using Instruments (Leaks) - Xcode?