xcd*_*n05 2 c++ memory heap object
在我的一个对象中,我创建了一个无符号字符数组成员来存储一些图像数据:
unsigned char* imageData;
Run Code Online (Sandbox Code Playgroud)
在构造函数中,我用new初始化它:
MyObject::MyObject()
{
int imageSize = 6054400;
imageData = new unsigned char[imageSize];
}
Run Code Online (Sandbox Code Playgroud)
imageData在整个循环过程中被填充.
直到循环结束时才会删除此对象(MyObject),但我需要在循环中途删除imageData.所以我刚刚创建了这个函数:
void MyObject::DeleteAllMembers
{
delete [] imageData;
}
Run Code Online (Sandbox Code Playgroud)
我在循环结束时调用它:
theObj.DeleteAllMembers();
Run Code Online (Sandbox Code Playgroud)
问题是每次我的程序进入代码行:
delete [] imageData;
Run Code Online (Sandbox Code Playgroud)
它崩溃了,留下这个错误信息:

在这一点上,我不知道为什么会这样.
我尝试过的一些事情是:
imageData = 0删除它后尝试过,不幸的是我的程序仍在崩溃delete [] imageData.memset(&imageData, 0, imageSize);,但这给了我一个访问冲突错误.每次,程序仍然在同一行崩溃.我知道有人在看我的代码,认为"你好,你要做的就是____________________." 有人可以告诉我我做错了什么吗?
编辑:对不起我说错了.我每次在开始时创建该对象循环和它能够在结束时删除循环,我不知道为什么我在节目的开头和结尾说.
您可能需要稍加添加以防止多次删除同一指针:
void MyObject::DeleteAllMembers
{
delete [] imageData;
imageData = 0; // <-- here
}
Run Code Online (Sandbox Code Playgroud)