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 にロードして、エラーが発生した場所を確認できます。

于 2011-04-10T15:58:41.787 に答える