美文网首页
C++ 中的new 和 java中的 new

C++ 中的new 和 java中的 new

作者: 安安zoe | 来源:发表于2017-12-07 17:10 被阅读0次

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语句实例化一个对象,在堆中申请了一块连续空间来存放该对象

参考

相关文章

  • C++ 中的new 和 java中的 new

    C++:创建实例 new创建的类对象需要指针来接收,该类对象使用完毕后需要使用delete销毁 new创建的对象使...

  • new失败抛出异常吗?

    new/delete 在C++中动态分配与释放内存是通过new/delete和new []/delete []实现...

  • C++中的new

    C++的设计者希望它能处理各种各样的问题。因此,C++的某些特征对一些特殊的应用非常重要,这其中控制内存分配就是重...

  • C++的new和delete详解

    new和delete的内部实现 C++中如果要在堆内存中创建和销毁对象需要借助关键字new和delete来完成。比...

  • Java中newInstance()和new()

    在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法。通过查询Java Docum...

  • C++中new、operator new和placement n

    1. new (1)C++对象实例化的时候使用new关键字和不使用new关键字的区别 使用new是动态分配内存,这...

  • c++中的new和delete

    用法。 new初始化new int;开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)。new i...

  • Object-C Two-Stage Creation:allo

    在其他语种中例如JAVA,C++,Ruby等这些语言中new是很常见的,但是在object-c中,大家最常见到的和...

  • JNI内存释放以及泄露处理方法汇总

    在c++中new的对象,如果不返回java,必须用release掉,否则内存泄露。包括NewStringUTF,N...

  • c++ new 和delete的种种

    new/delete动态管理对象,new[]/delete[]动态管理对象数组。 C++中,把int 、char....

网友评论

      本文标题:C++ 中的new 和 java中的 new

      本文链接:https://www.haomeiwen.com/subject/fghjixtx.html