2011-09-23 104 views
6

我有兩個類,A和Bar,它們共享一個頭文件,其中包含Foo * foo。 A類實例化一個對象Bar * bar。這工作正常。但是,如果我做對象訪問衝突讀取位置0x00000000。 '新'關鍵字?

Bar* bar = new Bar(); 

的實例,我得到一個訪問衝突時,酒吧試圖做一些FOO。爲什麼這有所作爲?

如果我不使用'新'它工作正常。這是錯誤:

Unhandled exception at 0x003c17ea in Direct3DTutorial7.exe: 0xC0000005: Access violation reading 
location 0x00000000. 

謝謝。

+7

你可以包含頭文件嗎? – riwalk

+1

在調試器中運行它,使用callstack找到崩潰點並添加相關的代碼部分。 –

+1

這很可能意味着您試圖取消引用空指針。 – Jesper

回答

13
0xC0000005: Access violation reading location 0x00000000. 

這意味着你提領一空指針,可能在Bar構造,或在某些由該構造方法調用其他代碼。使用調試器來確定確切位置。

0

我猜你沒有分配你的Foo對象。由於它是一個全局變量,它在程序啓動時被初始化爲零,這對於指針對應於空值。

0

您是否記得構建一個Foo對象並將其分配給foo指針?這聽起來像你的Bar構造函數試圖用foo做某件事,但你還沒有創建Foo對象。

相關問題