0
我正在開發一個應用程序在VS 2008速成版上的調試模式。當實例化一個我創建的類的新指針時,我得到一個std :: bad_alloc異常。由於它處於調試模式,因此在出現的窗口中單擊「中斷」,然後按「播放」按鈕嘗試恢復程序。std :: bad_alloc但最終作品
接下來發生的事情是非常意外的:程序按照它應該的方式工作。
這個錯誤,當我使用Matrix* vec = new Matrix[maxItr + 1];
(我檢查和maxItr
是等於五時引發的錯誤)實例Matrix
對象(我的班級)的陣列發生。這個類有幾個整數成員和一個指向char的指針。這個指針沒有在默認的構造函數中分配(它甚至設置爲0),所以我將其作爲錯誤的原因予以消除。 (請求沒有非常大的內存塊)。
有沒有人對此有所瞭解?
你需要提供一些代碼來解釋你的問題。 – iammilind
當您得到異常時,可能是操作系統表示內存未分配給您。在這一點上的行爲是不確定的,你仍然可以寫入內存,但你沒有任何保證......這是否有道理?你在使用什麼操作系統?我可能不正確,因爲根據操作系統你不能寫入任意內存,但這是你所看到的一個可能的原因。 – GBa
當堆管理器檢測到堆損壞時,也會引發bad_alloc。 –