2013-04-11 62 views
0

我在test.h文件: double *condmatrix - 全局變量 然後在主程序中我做的:刪除和重新分配全局指針 - 段錯誤

cycle_start { 
    proc1() { 
    condmatrix = new double[maxdim]; 
    ....simple work with the array itself 
    } 
    proc2() { 
    delete [] condmatrix; 
    } 
}//cycle finish 

這給了我一個段錯誤。我嘗試用[]語法刪除,沒有和其他方式,它仍然給出了段錯誤。 Maxdim因週期而異。

+1

看起來沒問題。你能給我們一個最小的完整例子嗎? – Beta 2013-04-11 13:56:08

+0

也許你試圖刪除它兩次 – Alon 2013-04-11 13:56:27

+0

maxdim的值是什麼?參見[link](http://stackoverflow.com/questions/1087042/c-new-int0-will-it-allocate-memory) – 2013-04-11 14:07:45

回答

0

好吧,我發現,我分配的指針兩次,那就是:

condmatrix = new double [maxdim]; 
condmatrix = new double [maxdim]; 
delete [] condmatrix; 

我知道這應該不會造成問題,但顯然它沒有,因爲重寫代碼後分配一次,作品完美。也許有一些內存損壞,我偶爾會修復它。