我正在根据我读取的文件的大小创建一个字符数组。在未找到文件的情况下,不创建数组。当我调用我的析构函数时,我收到一个错误,我认为它告诉我指针无效,因为找不到文件。我想要做的只是检查类是否已正确加载到文件中的缓冲区中。我可以添加一个成功标志并在析构函数中检查它,但我认为有更好的方法。
在类头中:
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)
行时遇到访问冲突。我正在尝试检查数组是否存在,如果存在则将其删除。