当前位置: 代码迷 >> 综合 >> C++中使用new与不使用new创建对象的区别
  详细解决方案

C++中使用new与不使用new创建对象的区别

热度:3   发布时间:2024-02-02 11:13:46.0

 一、实例

使用new创建对象:

CTest*  pTest = new  CTest();
delete pTest;

不使用new创建对象:

CTest  mTest;

使用new,用一个指向类对象的指针来接收;不使用new,直接定义一个类对象。

二、区别

使用new创建的特点:

new创建类对象使用完需delete销毁。

new创建类对象需要指针接收,一处初始化,多处使用。

new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间。

new对象指针用途广泛,比如作为函数返回值、函数参数等。

频繁调用场合并不适合new,就像new申请和释放内存一样。

作用域:

不用new:作用域限制在定义类对象的方法中,当方法结束时,类对象也被系统释放了(自动执行析构函数,不会造成内存泄漏)。

用new:创建的是指向类对象的指针,作用域变成了全局,程序结束需delete删除,系统不会自动释放(可能造成内存泄漏)。

类指针:

CTest*  pTest = NULL;

这跟不用new申明对象有很大区别,类指针可以先行定义,但类指针只是个通用指针,在new之前并未为该类对象分配任何内存空间。未经过对象初始化,则不需要delete释放。

 

  相关解决方案