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

Error when deleting dynamic array c++

本文关键字:出错 c++ 数组 动态 删除      更新时间:2023-10-16

当我的程序遇到这段代码时,我得到了一个运行时错误。我确信是删除造成的,我只是不知道出了什么问题。

以下是函数:(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中(我认为这是一个libs的memeber)表达式:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

只需使用std::vector,即可避免疼痛。


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


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