我正在使用Dr. Memory来调试我的代码。它给了我以下信息:
INVALID HEAP ARGUMENT: allocated with operator new[], freed with operator delete
但是,每当我使用delete[]
代替delete
时,它都会给我同样的错误。错误发生在以下行中:
for (int x = 0; x < width; ++x)
{
delete data[x];
}
delete [] data;
变量data
的分配方式如下:
data = new char*[width];
for (int i = 0; i < width; ++i)
{
data[i] = new char[1];
}
有人可以帮帮我吗?
答案 0 :(得分:1)
您目前使用
分配元素data[i] = new char[1];
并使用
删除它们delete data[x];
当您使用new[]
分配它们时,需要使用delete []
删除它们。
delete [] data[x];
答案 1 :(得分:0)
您还需要匹配第二个new[]
(data[i] = new char[1]
):
for (int x=0; x<width; ++x){
delete [] data[x];
}
delete [] data;
答案 2 :(得分:0)
由于您使用的是c ++,而不是C ...
重新设计代码以使用STL和std :: string在程序中创建std :: strings的向量。
使用std :: string可能会消除内存泄漏。