C++实例化对象和用动态内存分配实例化对象比较

原创 2016年08月29日 18:44:34
这个本质上是对象分配区域的问题,前者是在栈(stack)上分配空间,后者是在堆(heap)上分配空间。
栈上分配空间的好处是快,而且对象生存期是自动的,离开当前域之后就自动析构回收。坏处就是栈空间有限,而且不能人为控制对象的生存期,比如你无法将一个函数内部的栈上的对象返回,因为这个函数执行完毕后栈空间会自动回收。
堆上分配空间就相反,new一个空间出来是很慢的,而且对堆上对象的访问也稍慢于栈上。一旦new一个空间出来,需要自己手动去delete回收,系统不会帮你管理回收(用GC的除外),但是分配空间大小灵活,而且正因为是手动回收的,你可以自由控制对象生存期,常用来跨域传递对象。

相关文章推荐

java面向对象——继承最终章--子类的实例化过程(内存)

一个对象的实例化过程:Person p=new Person(); 1.jvm会读取指定的路径下的Person.class文件,并加载进内存。    并会先加载Person中的父类(如果有父类对象的情...

内存中对象实例化细节

创建一个对象的实例化过程:eg: Student s = new Student(); 1.JVM读取指定路径下的Student.class文件,并加载进内存(有定义父类先加载父类) 2.在堆内存...

[反射类] -- PHP动态实例化对象并向构造函数传递参数

原文地址: https://blog.unlink.link/php/php_runtime_instance_class_and_pass_parameters.html/comment-page-...
  • lmjy102
  • lmjy102
  • 2017年05月12日 10:46
  • 895

C++只在栈或堆上实例化对象

C++如何让类对象只能在堆(栈)上分配空间一般情况下写一个类都是可以采用new在堆上分配空间,或直接采用 类名+对象名 的方式在栈上分配空间。但有时候,如果想让一个类只能在栈上或者堆上分配空间,又该怎...

java实例化对象的过程

  • 2017年08月17日 17:32
  • 10KB
  • 下载

C++和JAVA实例化对象的区别

JAVA: A a = new A(); 为A对象创建了一个实例,但在内存中开辟了两块空间:一块空间在堆区,存放new A()这个对象;另一块空间在堆栈,也就是栈,存放a,a的值为new A(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++实例化对象和用动态内存分配实例化对象比较
举报原因:
原因补充:

(最多只允许输入30个字)