c++ pair删除错误

C++ pair delete error

本文关键字:错误 删除 pair c++      更新时间:2023-10-16

*更新: *终于找到问题了。问题是这样的:

pair<int,int> *findPair(){
    pair<int,int> *t = new pair<int,int> [10];
    for(int i=0;i<11;i++) // error here
    {
        t[i].first =1;
        t[i].second =2;
    }
    return t;
}
int main() {
    pair<int, int> * tt = findPair();
    tt[1].first =8;
    delete [] tt; // error
    return 0;
}

存在段故障错误。GCC不显示任何越界错误警告。在我的原始代码中,我使用k作为pair数组的索引。K在每个while循环中都发生变化,并以一个超出边界的值结束。对于给您带来的不便,我深表歉意。

我将您的代码复制到一个.cc文件中(带有正确的#include),这段代码工作得很好。你确定这就是分割错误所在吗?

如果您使用的是linux,并且没有核心文件,请使用"ulimit -c unlimited"。然后,您可以在gdb中加载core文件来检查错误发生的位置。