【发布时间】:2014-08-28 02:34:18
【问题描述】:
我有一个名为“Menu”的类,该类有一个指向“MenuItem”类对象的指针数组。 Menu 类的前三个相关行如下所示:
class Menu
{
MenuItem *items[5];
在 Menu 类的构造函数中,我将 items 创建为:
for(int i=0; i<nItems; i++)
{
items[i] = new MenuItem(titles[i],...); //with all necessary parameters
在 Menu 类的析构函数中,我将 items 删除为:
~Menu()
{
for(int i=0; i<nItems; i++)
delete items[i];
问题:我的问题是当我调用这个析构函数时,我得到了一个错误Debug Assertion Failed!。除了这个析构函数,一切都很好。如果我不调用此析构函数,则没有错误。我想知道如何解决这个问题?我想删除这个数组,让我的记忆变得干净。
【问题讨论】:
-
如果nItems
-
在我的程序中是的
nItems=4 -
但是断言是什么?
-
我对此一无所知!
-
内存管理很棘手;您可能没有正确遵循Rule of Three。为什么不使用专门为正确管理内存而设计的
std::vector和/或std::unique_ptr,而不是玩弄指针并希望得到最好的结果?