社区
C++ 语言
帖子详情
在析构函数里可以用delete释放动态分配的内存吗?
南京短暂的春天
2009-05-01 03:14:30
我在类A内部有new动态分配了内存,存储另外一种类B的一些对象,然后把这些对象pushu-back到了vector里。
现在类A操作完了(当然类B的对象也不需要用了),想释放掉分配的内存,可以在析构函数里用delete释放吗?
...全文
382
13
打赏
收藏
在析构函数里可以用delete释放动态分配的内存吗?
我在类A内部有new动态分配了内存,存储另外一种类B的一些对象,然后把这些对象pushu-back到了vector里。 现在类A操作完了(当然类B的对象也不需要用了),想释放掉分配的内存,可以在析构函数里用delete释放吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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];
南京短暂的春天
2009-05-01
打赏
举报
回复
现在还有个问题。
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了;
南京短暂的春天
2009-05-01
打赏
举报
回复
[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的析构函数.
南京短暂的春天
2009-05-01
打赏
举报
回复
往往往往
珍惜生命远离CPP
2009-05-01
打赏
举报
回复
可以.
mengde007
2009-05-01
打赏
举报
回复
要看vector以后还要用这些数据吗,什么样的数据;是指针类型的吗;楼组在详细点;
C++中new和
delete
创建对象的流程?
在C++中,new 和
delete
操作符用于
动态分配
和
释放
内存
。它们在创建和销毁对象时涉及多个步骤,包括
内存
分配、构造函数调用、
析构函数
调用和
内存
释放
。
C++中管理动态
内存
:
析构函数
中的`
delete
`使用指南
正确管理动态
内存
是C++编程中的一个重要方面。使用
delete
和
delete
[]在
析构函数
中
释放
动态分配
的资源,避免野指针问题,
释放
后将指针设置为nullptr,以及通过删除拷贝构造函数和赋值运算符防止多次
释放
同一块
内存
,都是确保程序稳定性和安全性的关键步骤。遵循这些最佳实践,可以帮助你编写更加健壮和安全的C++代码。
C++ new和
delete
动态分配
和
释放
内存
关于C++的关键字兼运算符: new和
delete
new new其实就是告诉计算机开辟一段新的空间,但是和一般的声明不同的是, new开辟的空间在堆上,而一般声明的变量存放在栈上 。通常来说,当在局部函数中new出一段新的空间,该段空间在局部函数调用结束后仍然能够使用,可以用来向主函数传递参数。另外需要注意的是, new的使用格式,new出来的是一段空间的首地址 。所以一般需要用指针来存放这段地址 为什么需要new来开辟
内存
空间: 比如说 数组的长度是预先定义好的,在整个程序中固定不变。C++ 不允
new与
delete
动态分配
和
释放
内存
(1)new运算符使用的一般格式: new 类型 [初值]; 用new分配空间时不指定初值。如果由于
内存
不足等原因而无法正常分配空间,那么new会返回一个空指针NULL,用户可以更具该指针的值判断分配空间是否成功。 例如: new int;//开辟一个存放整形的存储空间,返回一个指向该存储空间的地址(指针)。 new int (100);//开辟一个存放整形的空间,并指定该整数的初值为100。 new *c=new char [10];//开辟一个存放字符数组的空间,返回首地址。 float *
c++中
delete
和
析构函数
之间的区别
delete
=1.调用
析构函数
,
释放
对象中的成员资源 2.归还对象空间(free) 其中在调用
析构函数
的时候,有可能还会对其他对象进行
delete
,然后调用这个对象的
析构函数
。。。 看这个例子: 转载原文地址: https://www.cnblogs.com/wycnb/p/4664934.html
delete
用于
释放
new在堆中动态生成的对象空间。
释放
时会...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章