內這裏是我的問題的描述:從全局變量
- 有一類「Class_A」,需要的內存1076字節的建設 的實例。
sizeof(Class_A)= 1076 bytes;
- 沒有爲Class_A的包裝類, 「Class_A_Wrapper」,在它的構造函數動態創建 「Class_A」 的一個實例:
。
#include "Class_A.h"
Class_A_Wrapper{
public:
Class_A_Wrapper();
~Class_A_Wrapper();
private:
Class_A* class_a;
};
Class_A_Wrapper::Class_A_Wrapper(){
class_a = new Class_A();
}
- Class_A_Wrapper對象全局聲明中第三個文件:
。
#include "Class_A_Wrapper.h"
Class_A_Wrapper a_wrapper;
- 程序崩潰! 「主」 - 函數調用之前
程序崩潰,此刻,當它試圖創建 了「a_wrapper」 -object,爲Class_A_Wrapper調用構造函數,最後調用「class_a =新Class_A()」;由於我不明白的原因,編譯器將sizeof(Class_A)評估爲1044字節,而不是1076。 這不是我的代碼,這不是我用第三個文件在全局聲明對象,但我需要找到這個崩潰的原因,我真的很困惑。 我會非常感謝任何意見和提示,非常感謝你提前。
如果Class_A位於共享庫中,請確保您用於鏈接的標頭與運行時加載的相同版本 – 2010-11-18 10:53:47
向我們展示class_A的構造函數,並且您怎麼知道它分配了1044個字節 – Chubsdad 2010-11-18 10:55:05
我粘貼了你的代碼放到一個源文件中,並添加了最少量的代碼來編譯它(Class_A的定義,Class_A_Wrapper的析構函數的空實現,一個空的main)。它對我來說運行良好。也許你的問題是你沒有發佈的代碼? – 2010-11-18 10:59:43