C++ 无法使用delete";未分配要释放的指针";
以下是我的功能:C++ 无法使用delete";未分配要释放的指针";,c++,heap,delete-operator,C++,Heap,Delete Operator,以下是我的功能: void Tetris::place_square(int* coords,char type){ if (coords[1]>heights[coords[0]]){ char* old=data[coords[0]]; data[coords[0]]=new char[coords[1]]; for (unsigned int i=0; i<heights[coords[0]]; ++i){
void Tetris::place_square(int* coords,char type){
if (coords[1]>heights[coords[0]]){
char* old=data[coords[0]];
data[coords[0]]=new char[coords[1]];
for (unsigned int i=0; i<heights[coords[0]]; ++i){
data[coords[0]][i]=old[i];
}
for (unsigned int i=heights[coords[0]]; i<coords[1]; ++i){
data[coords[0]][i]=" "[0];
}
data[coords[0]][coords[1]-1]=type;
heights[coords[0]]=coords[1];
delete old;
} else {
data[coords[0]][coords[1]-1]=type;
}
}
void俄罗斯方块::place_square(int*coords,字符类型){
if(坐标[1]>高度[0]]{
char*old=数据[coords[0]];
数据[coords[0]]=新字符[coords[1]];
对于(无符号整数i=0;i查看此部分:
char* old=data[coords[0]];
data[coords[0]]=new char[coords[1]];
我不确定数据
数组中有什么,但看起来您正在分配一个尚未初始化的指针
如果您正在初始化
data[i]=new char[0];
然后,您还应该使用delete[]
查看本节:
char* old=data[coords[0]];
data[coords[0]]=new char[coords[1]];
我不确定数据
数组中有什么,但看起来您正在分配一个尚未初始化的指针
如果您正在初始化
data[i]=new char[0];
然后,您还应该使用delete[]
查看本节:
char* old=data[coords[0]];
data[coords[0]]=new char[coords[1]];
我不确定数据
数组中有什么,但看起来您正在分配一个尚未初始化的指针
如果您正在初始化
data[i]=new char[0];
然后,您还应该使用delete[]
查看本节:
char* old=data[coords[0]];
data[coords[0]]=new char[coords[1]];
我不确定数据
数组中有什么,但看起来您正在分配一个尚未初始化的指针
如果您正在初始化
data[i]=new char[0];
然后您还应该使用delete[]
进行删除。该地址表明data[coords[0]]
以前指向自动变量。您只能对new
分配的内容使用delete
此外,当事物由new[]
分配时,您应该使用delete[]
,正如本例中所示
要解决此问题,您需要检查数据的初始化
以及任何可能更新数据[x]
的代码。也可能坐标[0]
超出数据的范围地址指示数据[0]]
以前指向一个自动变量。您只能对new
分配的内容使用delete
此外,当事物由new[]
分配时,您应该使用delete[]
,正如本例中所示
要解决此问题,您需要检查数据的初始化
以及任何可能更新数据[x]
的代码。也可能坐标[0]
超出数据的范围地址指示数据[0]]
以前指向一个自动变量。您只能对new
分配的内容使用delete
此外,当事物由new[]
分配时,您应该使用delete[]
,正如本例中所示
要解决此问题,您需要检查数据的初始化
以及任何可能更新数据[x]
的代码。也可能坐标[0]
超出数据的范围地址指示数据[0]]
以前指向一个自动变量。您只能对new
分配的内容使用delete
此外,当事物由new[]
分配时,您应该使用delete[]
,正如本例中所示
要解决此问题,您需要检查数据的初始化以及可能更新数据[x]
的任何代码。也可能coords[0]
不在数据的范围之内在调用place\code>?data[0]之前如何填充data
和coords
是用数据[i]=new char[0]初始化的;
coords只是一个大小为2的数组,有两个整数coords[0]
始终是数据的有效索引在调用place\u square
之前如何填充数据和coords
?数据[coords[0]];
是用数据[i]=new char[0]初始化的
coords只是一个大小为2的数组,有两个整数coords[0]
始终是数据的有效索引在调用place\u square
之前如何填充数据和coords
?数据[coords[0];
是用data[i]=新字符[0]初始化的
coords只是一个大小为2的数组,有两个整数coords[0]
始终是数据的有效索引在调用place\u square
之前如何填充数据和coords
?数据[coords[0];
是用data[i]=新字符[0]初始化的;
coords只是一个大小为2的数组,带有两个整数coords[0]
始终是数据的有效索引否,data[coords[0];
是用data[i]=new char[0]初始化的
这样初始化数组有什么原因吗?这实际上使以后必须释放的指针数量增加了一倍。请看一下大小为0的分配。不,数据[coords[0]];
是用数据[i]=new char[0]初始化的
这样初始化数组有什么原因吗?这实际上使以后必须释放的指针数量增加了一倍。请看一下大小为0的分配。不,数据[coords[0]];
是用数据[i]=new char[0]初始化的
这样初始化数组有什么原因吗?这实际上使以后必须释放的指针数量增加了一倍。请看一下大小为0的分配。不,数据[coords[0]];
是用数据[i]=new char[0]初始化的
这样初始化数组有什么原因吗?这实际上只是使以后必须释放的指针数量增加了一倍。请查看有关大小为0的分配。数据[coords[0]];
是用数据[i]=new char[0]初始化的;
@D