c++ 对象释放
来源:互联网 发布:hbo直播软件 编辑:程序博客网 时间:2024/04/25 18:10
============================================================博文原创,转载请声明出处蓝岩--移动互联网老兵============================================================先来看一个问题。。。------------我们知道在c中alloc/free是一对,c++中new/delete是一对,但它是对指针操作的,问题:对对象如何释放呢?例如:A*a=newA();deletea;上面是对指针释放。----如果B b,那么b怎么释放呢,不能用delete了吧???求解中!!!
------------
答案:对象可以存放在heap中,也可以在stack中,而release只对存放在heap中的对象有效。存放在stack中的对象,不需要显示的release。
而要想操作heap中的对象,在C++里有两种方式,通过 引用 或者 指针。于是当你想release some objects,
一定是通过malloc/delete某个指针来做的
栈(stack),在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
堆(heap),就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
----------------用IOS多了,我在想,如果函数中想返回一个对象,我在函数体中new一个A,我该在哪里delete呢,C++又不像ObjC有计数器。。。哎,c/c++的底子都忘光了。查资料。。如果函数体想放回一个对象,有
参考:http://blog.csdn.net/zhanghefu/article/details/5003407http://bbs.csdn.net/topics/390314416
------------
答案:对象可以存放在heap中,也可以在stack中,而release只对存放在heap中的对象有效。存放在stack中的对象,不需要显示的release。
而要想操作heap中的对象,在C++里有两种方式,通过 引用 或者 指针。于是当你想release some objects,
一定是通过malloc/delete某个指针来做的
Class A{ ...};Class B{ ...};...A* a = new A();//new 出来的指针,放在堆中,需要手动delete;(malloc 和 free 也是这样)B b;//对象b,存放在栈中,离开生存周期后,系统会自动释放其占用的内存空间-------------那么什么是堆,什么是栈呢?
栈(stack),在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
堆(heap),就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
----------------用IOS多了,我在想,如果函数中想返回一个对象,我在函数体中new一个A,我该在哪里delete呢,C++又不像ObjC有计数器。。。哎,c/c++的底子都忘光了。查资料。。如果函数体想放回一个对象,有
参考:http://blog.csdn.net/zhanghefu/article/details/5003407http://bbs.csdn.net/topics/390314416
- C#COM对象的资源释放问题解决
- object-c中的对象的释放
- c++---对象的动态建立和释放
- C#,无法访问已释放的对象。对象名:“Form1”。
- Objective-C 内存管理 对象创建与释放
- [Objective-C] 释放对象时在release之后要设成nil
- GDI+对象的释放
- autorelease对象的释放
- autorelease对象什么时候释放?
- c++ 对象释放
- .NET对象的释放
- delete-释放对象语法。
- c++ 对象内存释放
- c++ 对象释放
- delphi excel 对象释放
- python对象释放顺序
- 调试EXC_BAD_ACCESS 对象释放
- 多线程释放对象
- html 文本框 显示输入字符
- Visual Assist X 注释报错的解决
- iphone数据存储之-- Core Data的使用(一)
- 【C/C++学习】之十三、虚函数剖析
- XMPP——Smack[2]会话、消息监听、字体表情和聊天窗口控制
- c++ 对象释放
- maven构建使用Spring执行定时任务
- 飘逸的python - super()只不过是用来避免硬编码的
- win7 64位系统 下的 odbc数据源
- Javascript & CSS gotchas in Mobile Web App Development
- Python的50个模块,满足你各种需要
- 2013-07-26(周五)
- 通过GC创建dataguard备库失败一则
- IE文档模式