我有一個基於文本的小遊戲我正在處理,而且我有一個基本結束遊戲的功能,如果用戶通過這行代碼選擇選項:C++試圖刪除一個不存在的指針
void MainMenu::Exit()
{
std::exit(0);
}
這是罰款和所有,但MainMenu的析構函數被調用,其中包含刪除呼叫我使用new關鍵字創建的指針(所以我想我需要在退出程序之前,需要手動刪除的對象)。該對象是我的世界類,它是在用戶選擇播放時創建的。但是,用戶可以在世界指針創建之前退出主菜單,因此編譯器不知道指針指向的位置。我試圖改變的析構函數,看看世界目的是NULL,就像這樣:
MainMenu::~MainMenu()
{
if(world != NULL)
delete world;
}
但我仍然得到一個彈出窗口告訴我,我的程序已停止響應,並且我需要手動殺死它。
基本上我的問題是,有沒有辦法告訴指針是否實際指向某些東西?我甚至需要手動處理刪除指針嗎?
那空檢查是多餘的。 – chris
「MainMenu」的構造函數是什麼樣的?你用0初始化'world'嗎? – PomfCaster
請注意一般情況下,你不應該需要析構函數或者'delete'因爲你應該使用諸如'std :: vector'和智能指針來管理他們擁有的內存。手動內存管理可以很快失控。 – chris