在析构函数里可以用delete释放动态分配的内存吗?

南京短暂的春天 2009-05-01 03:14:30
我在类A内部有new动态分配了内存,存储另外一种类B的一些对象,然后把这些对象pushu-back到了vector里。

现在类A操作完了(当然类B的对象也不需要用了),想释放掉分配的内存,可以在析构函数里用delete释放吗?
...全文
381 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
光宇广贞 2009-05-01
  • 打赏
  • 举报
回复
不仅可以,而且必须
Legend258 2009-05-01
  • 打赏
  • 举报
回复
显然可以
辛鹤 2009-05-01
  • 打赏
  • 举报
回复
可以
mengde007 2009-05-01
  • 打赏
  • 举报
回复
修改一下:
vector<t_point>::iterator ite;

for(ite=data.begin();ite!=data.end();ite++)
delete ite;
lori227 2009-05-01
  • 打赏
  • 举报
回复
delete BST->data[i];
  • 打赏
  • 举报
回复
现在还有个问题。
vector<t_point> data;
///////////////////////////////////////////////////////////
for(int j=0;i<8;i++)
{
t_point *pi=new t_point(XX,XX,XX);
data.push_back(*pi);
}
之前用这样的方式操作了8次

现在要释放内存。怎么操作?

for(int i=(BST->data.size())-1;i>=0;i--)
{
delete &(BST->data[i]);
}
这样来释放可以吗?
mengde007 2009-05-01
  • 打赏
  • 举报
回复
如果是这样的话;那么可以直接delete了;
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mengde007 的回复:]
要看vector以后还要用这些数据吗,什么样的数据;是指针类型的吗;楼组在详细点;
[/Quote]

不要用了,是一维数组数据。
lingyin55 2009-05-01
  • 打赏
  • 举报
回复
可以啊,当类的生命周期结束之后,就是在析构函数里面执行析构的。

[Quote=引用楼主 dcmilan 的帖子:]
我在类A内部有new动态分配了内存,存储另外一种类B的一些对象,然后把这些对象pushu-back到了vector里。

现在类A操作完了(当然类B的对象也不需要用了),想释放掉分配的内存,可以在析构函数里用delete释放吗?
[/Quote]
pengzhixi 2009-05-01
  • 打赏
  • 举报
回复
是的,在A的析构函数里面delete释放,这样在vector调用remove或者析构时就会调用A的析构函数.
  • 打赏
  • 举报
回复
往往往往
  • 打赏
  • 举报
回复
可以.
mengde007 2009-05-01
  • 打赏
  • 举报
回复
要看vector以后还要用这些数据吗,什么样的数据;是指针类型的吗;楼组在详细点;

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧