专栏首页C++核心准则原文翻译C++核心准则​​ES.61:使用delete[]销毁数组,使用delete销毁对象

C++核心准则​​ES.61:使用delete[]销毁数组,使用delete销毁对象

ES.61: Delete arrays using delete[] and non-arrays using delete

ES.61:使用delete[]销毁数组,使用delete销毁对象

Reason(原因)

That's what the language requires and mistakes can lead to resource release errors and/or memory corruption.

这是C++语言的要求,如果用错会导致资源释放错误或者内存破坏。

Example, bad(反面示例)

void f(int n)
{
    auto p = new X[n];   // n default constructed Xs
    // ...
    delete p;   // error: just delete the object p, rather than delete the array p[]
}
Note(注意)

This example not only violates the no naked new rule as in the previous example, it has many more problems.

示例代码不仅违反了前面示例中的禁止暴露的new规则,还有更多其他错误。

Enforcement(实施建议)
  • If the new and the delete are in the same scope, mistakes can be flagged.
  • 如果new和delete同属一个作用域,错误可以被标记。
  • If the new and the delete are in a constructor/destructor pair, mistakes can be flagged.
  • 如果new和delete分别位于构造函数和析构函数,错误可以被标记。

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es61-delete-arrays-using-delete-and-non-arrays-using-delete

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++核心准则:R.10: 避免使用malloc()和free()

    malloc() and free() do not support construction and destruction, and do not mix ...

    面向对象思考
  • C++核心准则ES.60:避免在资源管理函数之外使用new和delete

    Direct resource management in application code is error-prone and tedious.

    面向对象思考
  • C++核心准则C.149:使用unique_ptr或者shared_ptr避免忘记销毁使用new创建的对象

    C.149:使用unique_ptr或者shared_ptr避免忘记销毁使用new创建的对象

    面向对象思考
  • 卡尔曼滤波器(Kalman Filters)

    卡尔曼滤波器,这是一种使用噪声传感器测量(和贝叶斯规则)来生成未知量的可靠估计的算法(例如车辆可能在3秒内的位置)。

    小飞侠xp
  • Android系统启动之zyogte进程java(下)

    ZygoteServer的代码路径frameworks/base/core/java/com/android/internal/os/ZygoteServer....

    李小白是一只喵
  • 《redis设计与实现》1-数据结构与对象篇

    学习完《redis设计与实现》前面关于数据结构与对象的章节,以上问题都能得到解答。你也能了解到redis作者如此的煞费苦心设计了这么多丰富的数据结构,目的就是优...

    kinnylee
  • 【Flutter 专题】图解 ListView 下拉刷新与上拉加载 (二)

    和尚上次尝试 ListView 异步加载列表数据时,用了三方库 flutter_refresh,这种方式使用很简单。但列表数据的加载也绝非一种,和尚...

    阿策
  • Java|分页爬取表情包图片

    前面讲过了如何对文章小说的分目录,分章节爬取保存,下面将讲述对当前热门的表情包进行分页,分类爬取。

    算法与编程之美
  • java8中skiplist的实现及源码分析

    这个类是实现了一个类似于树的二维连接的跳表,它的索引级别是放在分割开的节点里面的,基础节点拥有所有的数据。用这个便利的数据结构代替数组结构的原因主要有两点:

    开发架构二三事
  • ros系统

    apt install ros-melodic-desktop-full rosdep update echo “source /opt/ros/indig...

    sofu456

扫码关注云+社区

领取腾讯云代金券