0

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

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的索引。pairk 在每个 while 循环中发生变化,并以超出范围的值结束。谢谢大家,对造成的任何不便深表歉意。

4

1 回答 1

2

我将您的代码复制到一个 .cc 文件中(使用正确的#include),这段代码运行良好。你确定这是分段错误的地方吗?

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

于 2011-04-10T15:58:41.787 回答