2011-07-15 45 views
0

我正在開發一個應用程序在VS 2008速成版上的調試模式。當實例化一個我創建的類的新指針時,我得到一個std :: bad_alloc異常。由於它處於調試模式,因此在出現的窗口中單擊「中斷」,然後按「播放」按鈕嘗試恢復程序。std :: bad_alloc但最終作品

接下來發生的事情是非常意外的:程序按照它應該的方式工作。

這個錯誤,當我使用Matrix* vec = new Matrix[maxItr + 1];(我檢查和maxItr是等於五時引發的錯誤)實例Matrix對象(我的班級)的陣列發生。這個類有幾個整數成員和一個指向char的指針。這個指針沒有在默認的構造函數中分配(它甚至設置爲0),所以我將其作爲錯誤的原因予以消除。 (請求沒有非常大的內存塊)。

有沒有人對此有所瞭解?

+0

你需要提供一些代碼來解釋你的問題。 – iammilind

+0

當您得到異常時,可能是操作系統表示內存未分配給您。在這一點上的行爲是不確定的,你仍然可以寫入內存,但你沒有任何保證......這是否有道理?你在使用什麼操作系統?我可能不正確,因爲根據操作系統你不能寫入任意內存,但這是你所看到的一個可能的原因。 – GBa

+0

當堆管理器檢測到堆損壞時,也會引發bad_alloc。 –

回答

0

你的班級的構造函數中是否有new?或者可能是埋在另一個班級的new,如矢量?如果是這樣,也許你會得到對象向量的分配,但其中包含的一個或多個對象格式不正確。