C++ 具有列表的结构<&燃气轮机;在2米的地方。删除时的动态数组错误
对于一个小项目,我想使用一个包含stl容器的结构。 这个东西然后被打包成一个动态的2维。数组,但当我尝试删除它时, 这是错误 代码如下:C++ 具有列表的结构<&燃气轮机;在2米的地方。删除时的动态数组错误,c++,stl,struct,segmentation-fault,C++,Stl,Struct,Segmentation Fault,对于一个小项目,我想使用一个包含stl容器的结构。 这个东西然后被打包成一个动态的2维。数组,但当我尝试删除它时, 这是错误 代码如下: struct cell{ list<pair<double, double> > alist; }; int main() { struct cell ** myAr = new cell*[5]; for(int i = 0; i < 5; ++i) myAr[i] = new cell[5];
struct cell{
list<pair<double, double> > alist;
};
int main()
{
struct cell ** myAr = new cell*[5];
for(int i = 0; i < 5; ++i)
myAr[i] = new cell[5];
for(int j = 0; j < 5; ++j)
delete myAr[j];
delete myAr;
return 0;
}
结构单元{
清单主义者;
};
int main()
{
结构单元**myAr=新单元*[5];
对于(int i=0;i<5;++i)
myAr[i]=新细胞[5];
对于(int j=0;j<5;++j)
删除myAr[j];
删除myAr;
返回0;
}
有人能帮我吗?
提前谢谢。
Flo.使用
删除[]
分配给新[]
的内存:
for(int j = 0; j < 5; ++j)
delete[] myAr[j];
delete[] myAr;
for(int j=0;j<5;++j)
删除[]迈亚尔[j];
删除[]迈亚尔;
使用删除[]
分配给新[]
的内存:
for(int j = 0; j < 5; ++j)
delete[] myAr[j];
delete[] myAr;
for(int j=0;j<5;++j)
删除[]迈亚尔[j];
删除[]迈亚尔;
int main()
{
结构单元**myAr=新单元*[5];
对于(int i=0;i<5;++i)
myAr[i]=新细胞[5];
对于(int j=0;j<5;++j)
{
删除[]迈亚尔[j];
myAr[j]=0;
}
删除[]迈亚尔;
myAr=0;
返回0;
}
int main()
{
结构单元**myAr=新单元*[5];
对于(int i=0;i<5;++i)
myAr[i]=新细胞[5];
对于(int j=0;j<5;++j)
{
删除[]迈亚尔[j];
myAr[j]=0;
}
删除[]迈亚尔;
myAr=0;
返回0;
}
我认为删除[]myAr
应该可以正常工作我认为删除[]myAr代码>应该可以正常工作您分配了new[],因此您需要使用delete[]释放:
for(int j = 0; j < 5; ++j)
delete [] myAr[j];
delete [] myAr;
for(int j=0;j<5;++j)
删除[]迈亚尔[j];
删除[]迈亚尔;
您分配了new[],因此需要使用delete[]释放:
for(int j = 0; j < 5; ++j)
delete [] myAr[j];
delete [] myAr;
for(int j=0;j<5;++j)
删除[]迈亚尔[j];
删除[]迈亚尔;
和删除[]迈亚尔[j]
;他们还被分配了new[]
和delete[]myAr[j]
;他们还被分配了new[]
。