我正在根據讀取的文件大小創建一個字符數組。如果找不到該文件,則不會創建該數組。當我打電話給我的析構函數時,我收到一個錯誤,我想這是告訴我指針是無效的,因爲找不到文件。我想要做的只是檢查該類是否已正確加載到緩衝區中。我可以添加一個成功標誌並在析構函數中檢查它,但我認爲有更好的方法。如何在刪除數組之前檢查數組是否已分配
在類的頭:
uint32 m_fileSize;
char* m_fileBuffer;
在構造:
m_fileSize = 0;
m_fileBuffer = 0;
在初始化功能:
std::ifstream file(filename.c_str(), std::ios::in|std::ios::binary|std::ios::ate);
if (file.is_open())
{
m_fileSize = (int)file.tellg();
m_fileBuffer = new char[m_fileSize];
file.seekg (0, std::ios::beg);
file.read (m_fileBuffer, m_fileSize);
}
else
{
return false;
}
在析構函數:
if(m_fileBuffer)
{
delete [] m_fileBuffer;
}
回顧一下,當文件存在並加載時,它很好用。當它不在那裏時,我會看到if(m_fileBuffer)
行的訪問衝突。我試圖檢查數組是否存在,然後刪除它,如果它。
使用RAII所以你沒有在第一時間擔心這個問題。 – chris 2013-02-25 07:35:23
究竟是什麼錯誤?看起來應該可以正常工作。 – 2013-02-25 07:36:33
錯誤指向if(m_fileBuffer)行。 Loader.exe中0x00087bbc未處理的異常:0xC0000005:訪問衝突讀取位置0xccccccf0。 – 2013-02-25 07:40:48