zoukankan      html  css  js  c++  java
  • C++ 基础

    看到一些代码,使用 new [] 创建并分配内存了数组,且并未使用 delete [] ,而是使用 delete 进行释放该数组。所以回顾一下 delete 和 delete [] 的区别。

    使用 delete 释放 new [] 创建并分配内存的数组,该操作先释放数组的内存,并调用数组第一个对象的析构函数。对于基础类型(如:int)的数组来说,并没有额外的资源需要在析构函数中释放,所以即便未调用数组后续对象的析构函数,也不会出现内存泄漏的问题。

    但是对于一些自定义对象的数组来说,有时这些对象需要在析构函数中释放额外的资源,那么使用 delete 就会造成除数组第一个对象正确释放外,其余对象未能正确释放的问题了。

    结论就是,还是规范编程吧。

    示例:

    #include <iostream>
    
    int main()
    {
        int length = 10000;
        for (int i = 0; i < length; i++) {
            int* tmp = new int[10];
            delete tmp;
            std::cout << i << "
    ";
        }
    }
    

    结果:

  • 相关阅读:
    P2168 [NOI2015]荷马史诗
    P3195 [HNOI2008]玩具装箱TOY
    P1972 [SDOI2009]HH的项链
    P2339 提交作业usaco
    P3974 [TJOI2015]组合数学
    P2831 愤怒的小鸟
    [校内模拟题4]
    P3952 时间复杂度
    P3531 [POI2012]LIT-Letters
    2019.10.1 qbxt模拟题
  • 原文地址:https://www.cnblogs.com/zdfffg/p/14591616.html
Copyright © 2011-2022 走看看