這是我的最後一個問題的後續: C++ full system crash, release mode onlyC++版本VS調試,內存分配,跳過構造
基本上我有一個樹狀的數據結構,在釋放模式,完全凍結OS。出現這種情況是由於內存分配突然激增,超出了操作系統可以處理的範圍。
這個看似內存泄漏(它是,但在一分鐘內更多)是非常奇怪的,因爲我有所有必要的代碼來初始化指向NULL的指針,並最終分配它們(如果需要),如果它們被發現爲NULL。在調試模式下,這個正確的行爲被確認,並且事情分配正常(我可以看到NULL指針從調試器設置爲零)。
但是在發佈模式中,情況有所不同。構造函數完全被跳過,並且所有類的內部都被初始化爲隨機垃圾。這導致指針也變得不合時宜,並且這是內存分配到整個系統崩潰的地方。
爲什麼釋放模式會忽略我的構造函數?
我在Windows 7 btw上使用Visual Studio 2010。
發佈您的代碼。 – 2011-12-17 01:15:10
你真的認爲問題在於你的構造函數在發佈模式中被忽略了嗎? – 2011-12-17 01:16:47
是的,我調試它,這正是發生了什麼。有太多的代碼要發佈,但它或多或少基於此:http://www.cmlab.csie.ntu.edu.tw/~wildmb/pbrt/octree_8h-source.html – Gigi 2011-12-17 01:18:27