2 ch1314qm CH1314QM 于 2016.03.31 15:21 提问

在一个结构体中动态创建另一个结构体数组,那么怎样释放内存!求助,谢谢了!

struct Link_Info
{
int Destination_VertexID;
int Vertex_To_Vertex_LinkID;
int Cost_of_Link;

};

struct Vertex_Info {
int OutDegree;
int Vertex_Num;
Link_Info* out = new Link_Info[8];
};

Vertex_Info* Vertex_Chain = new Vertex_Info [600];

4个回答

caozhy
caozhy   Ds   Rxr 2016.03.31 15:34
已采纳

Vertex_Chain[0].Vertex_Num
->
600

caozhy
caozhy   Ds   Rxr 2016.03.31 15:27
 可以给结构体编写析构函数。
struct Vertex_Info {
...
~Vertex_Info ()
{
delete[] out;
}
}
CH1314QM
CH1314QM 我想问一下,我上面的方法存在什么问题呢?程序会直接崩溃
一年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.31 15:34

你的外侧循环的是Vertex_Chain数组长度,不是Vertex_Chain第一个元素的Vertex_Num长度

caozhy
caozhy 回复静下心来学编程: 如果问题解决,麻烦点下我回答右边的采纳,谢谢
一年多之前 回复
CH1314QM
CH1314QM 哦,对的!谢谢啦,我这边程序改动过,是我疏忽了!
一年多之前 回复
CH1314QM
CH1314QM   2016.03.31 15:26

我使用下面的方式释放的
for (int i = 0; i < Vertex_Chain[0].Vertex_Num; i++)
{
delete [] Vertex_Chain[i].out;
}
delete[] Vertex_Chain;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!