您的位置:首页 > 编程语言 > C语言/C++

c++的类中,声明一个对象好还是用指针申请一块空间好?

2010-12-03 11:21 330 查看
c++中的A a;就已经构造了对象;
而在java中 A a;

就是声明,还没有分配空间,

在c++中就非常的灵活


A a;在栈(stack)上分配空间

A * a= new A;在堆(heap)上分配空间

栈上空间自动回收

堆空间需要程序员手动回收

关于哪个好,先分析一下

这个本质上是对象分配区域的问题,前者是在栈(stack)上分配空间,后者是在堆(heap)上分配空间。


栈的情况:

栈上分配空间的好处是快,而且对象生存期是自动的,离开当前域之后就自动析构回收。

坏处就是栈空间有限,而且不能人为控制对象的生存期,

比如你无法将一个函数内部的栈上的对象返回,因为这个函数执行完毕后栈空间会自动回收。


堆的情况

堆上分配空间就相反,new一个空间出来是很慢的,而且对堆上对象的访问也稍慢于栈上。

一旦new一个空间出来,需要自己手动去delete回收,系统不会帮你管理回收(用GC的除外),

但是分配空间大小灵活,而且正因为是手动回收的,你可以自由控制对象生存期,常用来跨域传递对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐