找回密码
 立即注册

QQ登录

只需一步,快速开始

工控课堂 首页 工控文库 上位机编程 查看内容

C++中delete对象和数组对象的用法

2022-4-17 18:17| 发布者: 198366809| 查看: 994| 评论: 0|来自: 算法集市(头条)

摘要: C++在回收用 new 分配的单个对象的内存空间时,直接用 delete;回收用 new 分配的数组对象的内存空间时,需要用 delete。调用 new 所包含的动作:从系统中申请一块内存,并调用对象的构造函数;调用 delete 所包含的 ...

C++在回收用 new 分配的单个对象的内存空间时,直接用 delete;回收用 new[] 分配的数组对象的内存空间时,需要用 delete[]。

  • 调用 new 所包含的动作:从系统中申请一块内存,并调用对象的构造函数;
  • 调用 delete 所包含的动作:先调用对象的析构函数,然后将内存归还系统;
  • 调用 new[n] 所包含的动作:申请可容纳 n 个对象的空间,并调用 n 次构造函数来初始化这 n 个对象;
  • 调用 delete[] 所包含的动作:先调用 n 次对象的析构函数,再将内存归还系统。

比如下面这段代码:

#include <iostream>
using namespace std;

class Student {
public:
    Student() {
        cout << "1. Constructor" << endl;
    }
    ~Student() {
        cout << "2. Destructor" << endl;
    }
};

int main()
{
    Student* stu = new Student();
    delete stu;
    stu = nullptr;
  
    cout << "---" << endl;
  
    Student* stuArr = new Student[2];
    delete[] stuArr; // 不要漏了[]
    stuArr = nullptr;
  
    return 0;
}

运行结果为:

C++中delete对象和数组对象的用法

需要注意的是:若将 delete[] stuArr 改为 delete stuArr,则会导致 stuArr 指向的2个Student对象中的剩余1个未被销毁,造成内存泄漏。

C++中delete对象和数组对象的用法


C++中delete对象和数组对象的用法
关注公众号,加入500人微信群,下载100G免费资料!

最新评论

热门文章
关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 15:28 , Processed in 0.073468 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部