关于分配2维数组

时间:2016-11-29 15:02:00

标签: arrays memory

我很抱歉我的英语水平不好。 我正在使用VS2013。 我正在制作动态数组,这是我的代码。

char ** files = new char*[4];
cout << files << endl;
files[0] = new char[4 * 50];
cout << files[0][0] << endl;

for (int i = 1; i < 4; i++)
{
    files[i] = files[i - 1] + 50;
}

我想如果我将4和4 * 50改为变量。我可以制作动态数组。呃..我的意思是动态分配。但这就是问题所在。

//do something...
delete files[0];
delete files;

此代码发生错误。可能我删了两次东西。 (块类型是有效的pHead-> nBlockUse) 但是,在我看来,首先,我必须删除文件[0]删除char数组 然后我必须删除文件删除字符指针数组。 但强大的编译器说我做错了。 救救我!〜

1 个答案:

答案 0 :(得分:0)

实际上,您没有使用正确的C ++原语删除数组。

如果您使用new分配一个对象,则可以使用delete来取消分配它:

char *p = new char;
...
delete p;

使用新的T []分配对象数组时,必须使用delete []来释放数组:

char *p = new char[N];
...
delete[] p;

所以在你的例子中,你应该这样做:

delete[] (files[0]);
delete[] files;