2010-07-08 44 views
1

刪除指針時發生堆損壞錯誤。對於此項目,隨機基地址的鏈接參數設置爲禁用圖像隨機化。不知道爲什麼這樣設置。無論如何,只有包含庫的特定頭文件時纔會出現該錯誤。奇怪的是,即使包含該頭文件,如果隨機基地址設置爲啓用圖像隨機化,錯誤也不會出現。那麼真的有一個堆腐敗,或者我應該只是改變鏈接參數?刪除指針時發生堆損壞錯誤

+1

任何你通過基指針刪除的機會?如果是這樣,請確保基類定義了一個虛擬dtor。 – stinky472 2010-07-08 01:28:03

+2

這通常(並且幾乎總是)您的代碼的問題,而不是編譯器設置或系統標題。您可能在某處重寫了某些內存,偶然的情況是,當沒有包含某些頭文件或使用特定的編譯器設置時,它沒有觸及系統的關鍵部分。更多的信息,比如代碼示例在這裏會有所幫助。 – 5ound 2010-07-08 01:32:49

+5

發佈該類的代碼。 – 2010-07-08 02:00:12

回答

2

隨機基地址告訴是否始終將庫加載到同一地址。對它進行隨機化提供了一定程度的安全性,以防止利用程序調用/修改代碼。

幾乎可以肯定你的項目中存在一個堆問題,很可能它與包含的頭文件無關。有可能是頭部引入了一些使用損壞的堆的符號,導致了問題。同樣,當隨機化基地址時,你的堆仍然受到破壞,但問題從未以明顯的方式顯現(儘管事情可能稍微有些不正確)。

如果您能夠使用可能能夠幫助您的內存檢查器或調試分配器。

否則不幸的是沒有代碼/更多的信息將很難給你額外的提示。