美文网首页
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

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