我正在从一个巨大的外部包创建一个类。我跑了:
Foo* foo = new Foo("bar", 100);
if(!foo)
{
delete foo;
}
和
Foo::Foo(TString bar, int num)
{
setnull();
}
并且 setnull() 只是将每个类指针设置为 NULL,例如:
void Foo::setnull()
{
fooArray = NULL
...
}
和析构函数
Foo::~Foo()
{
if(fooArray != NULL)
delete[] fooArray;
...
setnull();
}
实际上,在 .hh 文件中也有很多指向从外部包设置为 NULL 的类的指针。结果我得到:
definitely lost: 332 bytes in 1 blocks
我也因添加构造函数而间接丢失:
fooArray = new (nothrow) bool [5];
if (fooArray == NULL)
{
cout << "ERROR: memory could not be allocated"<<endl;
}
fooArray[0] = 0;
和
indirectly lost: 26 bytes in 2 blocks
(另一件事,不知何故 Stackoverflow 的标题往往会吃掉“++”符号)