【发布时间】:2012-09-13 15:27:33
【问题描述】:
我的程序中出现了一点内存泄漏,这是我认为唯一可能发生的事情。
if (inputType == 'S')
{
SavingAccount* savingAccount = new SavingAccount();
inFile >> *savingAccount;
accounts.push_back(savingAccount);
}
虽然指针向量在程序结束时被删除,但我有 3 个错误泄漏,这似乎与我拥有的 3 种帐户类型相对应。话虽如此,如果我在将指针放入向量后删除指针,它也会删除向量中的条目(这是我所期望的)
有谁知道如何解决这个问题?
编辑:
void Transaction::cleanUp()
{
for (int i = 0; i < accounts.size(); i++)
{
delete accounts[i];
}
accounts.clear();
}
已添加清理代码。
编辑:已解决
我的问题与向量的关系不如类的析构函数。由于我没有定义虚拟析构函数,因此只删除了基类,留下了派生类的片段。添加这个后没有内存泄漏。
【问题讨论】:
-
你能发布你的清理代码吗?
-
您写了
this is about the only thing I think it could be- 为什么您认为这可能是唯一的原因?在更仔细地查看您的向量之前,请考虑使用new和malloc的其他地方。 -
我不在任何地方使用 malloc,其他任何地方都有“new”后有一个删除,除了这里。
-
顺便说一句,向量不为您删除指针的原因是,如果删除了,那么您将无法存储 未 分配的指针带有
new,或者当向量被销毁时您不想删除。 -
你提到你有一个基类。这个基类有虚析构函数吗?
标签: c++ memory pointers vector memory-leaks