请选择 进入手机版 | 继续访问电脑版

专注代码检测 - 阅镜

 找回密码
 立即注册
热搜: 安装 代码
查看: 111|回复: 0

对数组delete时需要使用delete[]

[复制链接]

70

主题

70

帖子

232

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
232
发表于 2021-9-10 14:23:02 | 显示全部楼层 |阅读模式
delete []操作符用于删除数组。delete操作符用于删除非数组对象。它们分别调用operator delete[]和operator delete。

  1. // Bad
  2. Foo* b = new Foo[5];
  3. delete b;  // trigger assert in DEBUG mode
复制代码

在new[]返回的指针上调用delete将是取决于编译器的未定义行为。代码中存在对未定义行为的依赖是错误的。

  1. // Good
  2. Foo* b = new Foo[5];
  3. delete[] b;
复制代码

在 C++ 代码中,使用  string 、 vector 、智能指针(比如std::unique_ptr < T[] > )等可以消除绝大多数  delete[]  的使用场景,并且代码更清晰。

关联漏洞:
  1.   高风险-内存破坏
复制代码

回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ|Archiver|手机版|小黑屋| 阅镜 ( 京ICP备2020034574号 )|网站地图|网站地图点击这里给我发消息

GMT+8, 2022-1-17 08:53 , Processed in 0.066799 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表