heights[coords[0]]){ -6ren">
gpt4 book ai didi

c++ - 无法使用删除 "pointer being freed was not allocated"

转载 作者:行者123 更新时间:2023-11-28 00:18:47 25 4
gpt4 key购买 nike

这是我的功能:

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;
}
}

它编译得很好,但是当我尝试运行它时,我得到了 malloc: *** error for object 0x7fff503e0020: pointer being freed was not allocated

我认为问题出在 delete old; 但我不知道如何解决。

最佳答案

查看此部分:

char* old=data[coords[0]];
data[coords[0]]=new char[coords[1]];

我不确定您的 data 数组中有什么,但看起来您正在分配一个尚未初始化的指针。

如果你用

初始化
data[i]=new char[0];

那么您还应该使用 delete[] 进行删除。

关于c++ - 无法使用删除 "pointer being freed was not allocated",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com