删除动态数组c ++时出错

时间:2013-12-08 05:28:29

标签: c++ arrays dynamic

我的程序遇到此代码时出现运行时错误。我确信删除是造成它的,我只是看不出有什么问题。

这是函数:( FavShows是前面定义的类)

void classInit()
{
    int numOfRecs;
    cout << "How many records will you enter?" << endl;
    cin >> numOfRecs;
    FavShows *m = new FavShows[numOfRecs];

    for( int i = 0; i < numOfRecs; i++)
    {
        m[i].initRec();
    }

for( int i = 0; i < numOfRecs; i++)
{
    m[i].printRec();
}
delete m;
}

我收到的错误说明: 错误是在dbgdel.cpp中(我假设这是其中一个库的成员) 表达:_BLOCK_TYPE_IS_VALID(pHead-&GT; nBlockUse)

1 个答案:

答案 0 :(得分:3)

只需使用std::vector,避免痛苦。


对于给定的代码,请注意new[]需要delete[],而不是普通的单个对象delete


使用std::vector,用户输入的记录计数会更容易,而不是预先询问多少。对于输入的每条记录,使用push_back将其添加到向量的末尾。然后从空矢量开始。