2013-01-24 55 views
-1

我得到了「計劃接收信號SIGSEGV,分割過錯。」從我的C++程序的錯誤只有當我試圖聲明一個向量:C++內存設計缺陷引起的載體聲明

vector <double> statev; 

矢量從未使用過。如果我註釋掉這一行,程序運行良好。我認爲這是Makefile和程序編譯方式的問題,但我不確定究竟發生了什麼。它是我正在處理的相當大的代碼庫,所以很難提供更多信息。任何意見將不勝感激。

+3

你在哪裏得到錯誤? (當調試時)你意識到這不足以得到答案,對吧? –

+0

我不認爲顯示段落髮生的位置會有所幫助。它更多的是一個關於什麼可能會導致這個問題的一般性問題,因爲它只是一個聲明,當刪除程序時可以正常工作...... – user1971455

回答

4

很可能是你在其他地方損壞的內存,直到被分配您沒有看到的副作用。

你可以嘗試通過Valgrind或其他內存錯誤檢測器運行的二進制趕內存損壞,因爲它發生,而不是後來在執行程序。

0

,如果你分享一些更多的信息,因爲剛剛通過聲明矢量不會引起 段錯誤會更好。 您的程序中有其他地方出現內存損壞,它不會直接影響,但會影響您何時聲明矢量。

我認爲它不與載體而已,如果你試圖在同一地點分配大的內存塊,它會再次失敗。發現它不是一件容易的事,一般來說內存損壞需要付出巨大的努力才能耐心調試。 :)