怎么释放对象

paschen 版主 2012-03-09 09:16:18
写了一个类,比如class A,之后在代码中A a()创建了一个对象,之后要怎样释放掉这个对象呢,自己调用析构函数没有用,是不是只有自己用new来创建一个对象才可以在中途释放,如果要用new,要怎么写
...全文
299 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
GYTAnonymous 2012-03-10
  • 打赏
  • 举报
回复
一般数据,系统会在它作用域后自动释放,,只有通过new的需要程序员释放(其实,如果你没有释放,在整个程序结束后,也是会释放的。。但这不是好程序员该做的事 )

释放有
delete obj和 delete[] obj,后面是用来释放数组型的。。

LZ可以看看这篇我转载的文章,,,希望有所帮助( 我是在思考局部变量问题是,疑惑有的变量居然不会消失,而从网上查找资料的,,对LZ应该有所帮助 )

http://blog.csdn.net/gytanonymous/article/details/7060574

http://blog.csdn.net/gytanonymous/article/details/7060584
吓人的鸟 2012-03-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ccgmi 的回复:]

new出来的对象是在内存的堆中分配的,需要程序员自己用 delete来释放,
delete只是负责对析构函数的调用,如果程序员的析构函数里没有写出全部
释放内存操作,内存还是会泄露,
而楼主的操作是在栈中分配的内存,
由系统自动释放,不用管它的
[/Quote]

正解
paschen 版主 2012-03-10
  • 打赏
  • 举报
回复
还有,这样的语句:
sss:
A a();
//代码
goto sss;

这样a定义了2次,为何测试后发现仍可以,是不是在goto前就释放了该对象
paschen 版主 2012-03-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhizichina 的回复:]

new出来的要主动delete,一般来说对象的创建是A *a = new A;而不是new A();这是非常常见的错误。需要与java相区分。
没有new出来的对象由系统自动释放。
[/Quote]

A *a = new A之后要怎么写,假如A的构造函数有参数
蓝枫10 2012-03-10
  • 打赏
  • 举报
回复
如果不是申请堆的话
离开作用域后自动调用析构函数···
new的对象
你要自己把它delete掉
这时就会调用析构函数···
quwei197874 2012-03-10
  • 打赏
  • 举报
回复
看变量存储方式和作用域,栈里的对象离开作用域后自动收回;自己new出来的要delete;全局的进程结束自动推出
xinen8721 2012-03-10
  • 打赏
  • 举报
回复
可以用类自身的析构函数
A *a = new A();

释放空间:
a.~A();
muyi66 2012-03-10
  • 打赏
  • 举报
回复
A *a = new A();
paschen 版主 2012-03-10
  • 打赏
  • 举报
回复
我用new的话
A *a = new A
怎么让他执行构造函数
支持英文数字 2012-03-09
  • 打赏
  • 举报
回复
new出来的要主动delete,一般来说对象的创建是A *a = new A;而不是new A();这是非常常见的错误。需要与java相区分。
没有new出来的对象由系统自动释放。
CCGMI 2012-03-09
  • 打赏
  • 举报
回复
new出来的对象是在内存的堆中分配的,需要程序员自己用 delete来释放,
delete只是负责对析构函数的调用,如果程序员的析构函数里没有写出全部
释放内存操作,内存还是会泄露,
而楼主的操作是在栈中分配的内存,
由系统自动释放,不用管它的
u_topian 2012-03-09
  • 打赏
  • 举报
回复
楼主的定义方式不用自己去释放,a所处的函数体运行完时,
自会调用a的析构函数。想要用new的话这样:
A *a = new A();
用完之后别忘了用delete释放内存,防止内存泄露。
LZS535261548 2012-03-09
  • 打赏
  • 举报
回复
通过new的需要 其他的好像是自动的
muyi66 2012-03-09
  • 打赏
  • 举报
回复
delete obj 用于释放对象

当然是要先new过的才能释放,要不然你释放什么?

64,654

社区成员

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

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