2017-06-21 38 views
0

WaitFree Var code in assembler window 在退出程序之前,我在3維動態數組上設置數組長度爲0時出現此異常如果我沒有設置0並退出應用程序,在彙編代碼中的另一個位置出現異常我想知道是否有其他人在動態數組中有這個問題我也有它在某些大小的動態數組上的問題最小數組的大小導致錯誤dblArray (1000,25,21),(1000,27,94),(1000,28,94)和(1000,29,94)的數組的陣列的陣列。數組(1000,18,21)和(1000,26,94)成功退出,所有數組都是第一個數組中所描述的雙精度數組,第一維上的長度設置爲0,足以釋放內存或者所有尺寸設置爲0?這個例外是沒有t可以捕獲並且不能被停止,所以可執行程序的行爲很有效。陣列本身似乎是佔據應用程序整個生命週期的佔位符。它們不會被創建或銷燬。有沒有其他方式來聲明它們?大多數其他問題都涉及某種異常,如聲明錯誤,如錯誤類型的變量。這意味着資源或數組被捆綁了起來,好像應用程序在關閉過程執行之前已經處理了它一樣。「外部:來自SetLength調用的SIGSEGV異常」

回答

1

這種錯誤表示堆損壞。通常是因爲你寫的超出了數組的範圍。這些寫入可能會破壞堆。

您將需要調試您的程序以找出它的哪個特定部分正在訪問越界。啓用範圍檢查編譯器選項以使編譯器發出運行時代碼,驗證數組訪問是否不使用超出邊界索引。

+0

謝謝我會嘗試它,並返回到堆棧溢出。 –

+0

謝謝戴夫它解決了範圍錯誤後,它工作。我很生氣,我看不到這些錯誤,因爲這個程序似乎大部分時間都在工作。動態數組上的索引值爲-1。我也有一個動態數組不夠大的地方。我想我預計拉撒路會抓住這個錯誤,但在這方面看起來更像C。 –

相關問題