具有運行使用Microsoft Visual C編譯時++ 2008 Express的上線調試新時被稱爲
comparison_vectors = new vec_element[(rbfnetparams->comparison_vector_length)+1];
與MYPROG.EXE在0x7c93426d錯誤未處理的異常崩潰的程序奇怪的錯誤:0000005:訪問衝突閱讀位置00000000
rbfnetparams->comparison_vector_length
計算結果爲4(應該做的,並在調試器中檢查),而且當我改變行作爲測試的東西仍然崩潰的位置:
comparison_vectors = new vec_element[5];
vec_element
是一個有幾個整數,雙打和幾個布爾的結構,但沒有方法或構造函數。如果我用malloc替換new,然後在另一個新的地方崩潰,這個事情就會運行。它每次運行時都不會崩潰,只是有時會出現這種情況,但似乎每次執行相同次數的迭代後都會崩潰。內存使用量在這個程序中只有10MB。
這會變得很陌生,因爲同一個程序在Solaris上編譯和運行在gcc下,通常顯示的錯誤遠遠多於Windows。
任何幫助將不勝感激,因爲我在如何調試這一個損失。
這聽起來像是一個堆腐敗問題給我。你有沒有嘗試在valgrind下運行該程序? – JaredPar 2012-04-19 18:43:49
...或者在VS本身下運行Debug版本,這通常會很快出現堆問題。問題可能不在這條線上,但更早。 – 2012-04-19 18:46:05
如果他在Windows上,這將無法工作 - 不適用於Windows的Valgrind端口。也就是說,如果他的代碼可以在* nix系統上編譯,他可以檢查,但是如果他使用的是Windows約定(如果跨平臺不存在,這很有可能),那麼他將會不幸運。 – RageD 2012-04-19 18:46:32