【问题标题】:How to find C or C++ code leaks using Instruments (Leaks) - Xcode?如何使用 Instruments (Leaks) - Xcode 查找 C 或 C++ 代码泄漏?
【发布时间】:2013-01-26 12:12:19
【问题描述】:
int* foo = new int[10];
foo = NULL;
sleep(60);

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

【问题讨论】:

  • 您确定编译器没有优化 new 调用吗?尝试使用foo(写和读)看看会发生什么。
  • OK,显示实际使用 foo的修改代码。
  • @trojanfoe 你说得对,我认为它是内部优化的,当我尝试设置和获取值时,它显示仪器泄漏。请将此作为您的答案。

标签: ios objective-c xcode memory-leaks instruments


【解决方案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);

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 2016-03-30
    • 2013-07-12
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2011-06-08
    • 2011-06-07
    • 2020-03-26
    相关资源
    最近更新 更多