首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++对象开释

2012-12-31 
c++对象释放我知道在c中alloc/free是一对,c++中new/delete是一对,但它是对指针操作的,问题:对对象如何释放

c++对象释放
我知道在c中alloc/free是一对,c++中new/delete是一对,但它是对指针操作的,问题:对对象如何释放呢?
例如:
A* a=new A();
delete a;
上面是对指针释放。
----
如果B b,那么b怎么释放呢,不能用delete了吧???求解中!!!


[解决办法]
对象可以存放在heap中,也可以在stack中,而release只对存放在heap中的对象有效。存放在stack中的对象

不需要显示的release。

而要想操作heap中的对象,在C++里有两种方式,通过 引用 或者 指针。于是当你想release some objects,

一定是通过malloc/delete某个指针来做的
[解决办法]
A* b;

b是一个指针变量,他是函数的局部变量,在“栈”中分配的,退出函数时,栈顶指针会恢复原来的值,也就相当于释放了变量所占的内存。

查看对应的汇编语言代码,可以很清楚地理解这些问题。


[解决办法]
只有new出的才需要delete, 其它的不用, 会自动处理.
malloc也同理.
[解决办法]


Class A
{
    ...
};
Class B
{
    ...
};
.
.
.
A* a = new A();//new 出来的指针,放在堆中,需要手动delete;(malloc 和 free 也是这样)
B b;//对象b,存放在栈中,离开生存周期后,系统会自动释放其占用的内存空间

LZ 可以去看下堆和栈的区别

热点排行