【发布时间】:2014-04-16 16:51:40
【问题描述】:
我正在尝试使用 Xcode 工具 (5.0.1) 查找 C++ 项目的内存泄漏。考虑一下:
#include <iostream>
#include <chrono>
#include <thread>
class Person
{
public:
int _age;
};
int main(int argc, const char * argv[])
{
Person* pers1 = new Person();
pers1->_age = 25;
std::cout << "Pers1 age is " << pers1->_age << std::endl;
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
return 0;
}
我不希望“泄漏”工具报告任何泄漏,因为
Leaks [...] 不知道您将如何处理您的指针。它所知道的是,每个分配的内存块仍然在某处引用。
正如 Zneak 指出的 in his answer to a similar question。 *
但是,我很惊讶 Allocations 没有暗示 Person 对象被分配,随后泄露。
我必须做什么(_pers1 = NULL; 除外)才能让 Instruments 报告该程序正在泄漏?或者这里根本没有泄漏,我对 C++ 的内存分配模型有误解?不是每个new 操作员调用都必须与delete 调用匹配吗?
*) 在同一个答案中,声称
要发生泄漏,您必须丢失分配内存的引用。
对于没有被分配所述内存的程序释放的堆内存,我没有比“泄漏”更好的词了。所以从技术上讲,我所问的可能不是“泄漏”,但我认为很清楚我在考虑什么现象。
【问题讨论】:
标签: c++ xcode memory-management memory-leaks