int* foo = new int[10];
foo = NULL;
sleep(60);
仪器没有发现在上面的代码中任何泄漏,如何使用仪器工具查找C或C ++代码泄漏。 我已经堆栈溢出大部分的解释是基于Objective C的代码...
int* foo = new int[10];
foo = NULL;
sleep(60);
仪器没有发现在上面的代码中任何泄漏,如何使用仪器工具查找C或C ++代码泄漏。 我已经堆栈溢出大部分的解释是基于Objective C的代码...
问题是,编译器将优化出调用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);