C++ 中的new 和 java中的 new

C++:创建实例

  • new创建的类对象需要指针来接收,该类对象使用完毕后需要使用delete销毁
  • new创建的对象使用heap堆空间,而直接创建的局部变量等使用栈空间
  • new对象指针用途广泛,比如作为函数的返回值,函数参数等
// 方式1
Ctest *pTest = new Ctest();
delete pTest; // 使用delete 才会释放指针所指向的空间 释放时调用析构函数
// 方式2
Ctest mTest;  // 使用完后,该类的析构函数负责空间释放

Java:创建实例

  • 对象的引用与对象: 对象引用是一个句柄,其中包含了一对指针,一个指针指向该对象的方法表,一个指向该对象的数据
  • 引用变量实际上功能类似指针,java程序不允许直接访问内存中的对象,只能通过对象的引用来操作该对象。如果堆中的对象没有任何引用变量指向该对象,那么这个对象就变成了垃圾,java GC回收机制会负责回收这部分内存,因此如果不再使用某对象,只需要将持有该对像引用的所有引用变量置为null
A a = new A();
// [1] 为A创建一个实例,在内存中开辟了两块空间,一块空间在堆区,用于存放 new A()这个对象
// 另一块空间在栈区,用来存放a,a的值是new A()该语句得到的对象的内存地址
//(注意这个内存地址是相对JVM而言的,并不是真实在机器中的内存地址)

Object obj; // 这是声明一个引用,类型是Object,值为null,还没有指向任何对象
obj = new Object();// new语句实例化一个对象,在堆中申请了一块连续空间来存放该对象

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容