2011-04-10 40 views
0

* 更新: *最後我找到了問題。問題是這樣的:C++對刪除錯誤

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循環中改變並且以超出界限的值結束。謝謝你們對由此造成的任何不便深表歉意。

+5

不能給出分段錯誤。我相信你的原始代碼正在做更多的事情。 – Nawaz 2011-04-10 15:36:04

+2

代碼也適用於我。 – birryree 2011-04-10 15:37:35

+0

「在這種情況下,沒有段* [sic] *錯誤,我將稍後編輯以顯示我的問題」;所以你發佈了一個不存在的問題和代碼?感謝您的參與... – 2011-04-10 15:40:31

回答

2

我將你的代碼複製到一個.cc文件中(使用正確的#include),而且這段代碼工作得很好。你確定這是分段錯誤所在嗎?

如果您使用的是linux,並且沒有核心文件,請使用「ulimit -c unlimited」。 然後,您可以在gdb中加載核心文件來檢查發生錯誤的位置。