今天在写C++练习题时产生一个疑惑:
new出字符数组后 需不需要在delete时加 [ ]
按道理 只要是数组应该都要加的,但是答案没有加,于是晚上回来上机运行

环境:DevC++

#include<iostream>
#include<cstring>
using namespace std;
//有一些些成员是之前用到的 不过不影响测试
class cbase
{public:cbase(int i,char *p_r)//构造函数{m_data=i;cout<<"constructure of cbase.m_data="<<m_data<<endl;//new出连续内存用来复制 p_r所指向的内容p_name=new char[strlen(p_r)+1];strcpy(p_name,p_r);}cbase(cbase &a)//拷贝构造函数{m_data=a.m_data;p_name=new char[strlen(a.p_name)+1];strcpy(p_name,a.p_name);}~cbase()//析构函数{delete []p_name;//第一次加上[]//delete p_name;//第二次 不加[]cout<<"destructor of cbase.m_data="<<m_data<<endl;}void get_name(){cout<<"p_name="<<p_name<<endl;}protected:int m_data;char *p_name;
};
int main()
{char str[10]="weishuai";cbase p(1,str);p.get_name();return 0;
}

运行结果:
第一次:加 [ ]

第二次:不加 [ ]

总结:
单单从这两次测试可以看出 对于new出来的字符数组 delete时加不加 [ ], 都能得到释放,并且系统并未给警告;
不过还有一种可能 就是不加 [ ]的话,会不会只delete了第一个字符呢?

关于delete字符串 需不需要加 [ ]相关推荐

  1. 条款51:编写new和delete时需固守常规

    /*编写new和delete时需固守常规*/ //非附属对象必须有独立的大小 #include<iostream> using namespace std; class Base{ pub ...

  2. C语言字符数组与字符串的使用及加结束符‘\0‘的问题

    1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...

  3. 注解RequestMapping中的URI路径最前面到底需不需要加斜线?

    注解RequestMapping中的URI路径最前面到底需不需要加斜线? 您有没有这样的困惑:在协同开发过程中,使用RequestMapping,或者是GetMapping,或者是PostMappin ...

  4. iview 按需引入解决加载慢的问题

    iview 按需引入解决加载慢的问题 参考文章: (1)iview 按需引入解决加载慢的问题 (2)https://www.cnblogs.com/ToBeBest/p/9645126.html 备忘 ...

  5. Effective C++(编写new和delete时需固守常规)

    author: luixiao1223 title: 编写new和delete时需固守常规 new 如果顺利返回指针 如果不顺利, 调用new handler(希望它可以做些什么). 如果没有new ...

  6. 51 编写 new 和delete 时需固守常规

    51 编写 new 和delete 时需固守常规 必须遵守的规则 须得返回正确的值: 内存不足时须得调用new-handling 函数: 须有对付零内存需求的准备: 避免掩盖正常形式的 new 或者 ...

  7. C语言:输入某年某月某日,判断这一天是这一年的第几天? 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

    以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天. 首先画下设计流程图: 源程序: #include<stdio.h> ...

  8. 《Effective C++》学习笔记(条款51:编写 new 和 delete 时需固守常规)

    最近开始看<Effective C++>,为了方便以后回顾,特意做了笔记.若本人对书中的知识点理解有误的话,望请指正!!! 条款50 讨论了什么时候需要自定义 operator new 和 ...

  9. 编写new和delete时需固守常规——条款51

    条款50已解释什么时候你会想要写个自己的operator new和operator delete,但并没有解释当你那么做时必须遵守什么规则.这些规则不难奉行,但其中一些并不直观,所以知道它们究竟是些什 ...

最新文章

  1. Go 学习笔记(50)— Go 标准库之 net/url(查询转义、查询参数增/删/改/查、解析URL)
  2. 存在描述所有生命的方程吗?
  3. Google ToolBar 3.0 Beta试用
  4. Leetcode--72.编辑距离(java)
  5. JavaScript代码规范和性能整理
  6. Java面试题--HashMap是什么?
  7. codevs 1191 树轴染色 线段树区间定值,求和
  8. HexEdit Linux下命令集
  9. Hark的数据结构与算法练习之梳排序
  10. Java clone克隆方法 --深拷贝--浅拷贝 --原型模型
  11. 站在两个世界的边缘 程浩,一个认真生活过的人
  12. 如何选择剑桥英语KET,PET课程和老师
  13. 用python绘制叠加等边三角形_使用turtle库绘制叠加等边三角形
  14. Python小黄人绘制
  15. 主播必备超萌代打猫咪,超人气全键盘版资源下载~
  16. thinkDifferent思维糖果
  17. 1155网址大全:打造简单实用的网址导航
  18. IDEA配置远程debug
  19. 计算机视觉(CV)方向今年招聘情况怎么样?是否已经人才过剩?
  20. 计算机游戏的作文,电脑游戏作文3000字初一_查字典作文网

热门文章

  1. YARN作业提交流程剖析
  2. 【转】webpack中关于source map的配置
  3. 排查 CI Unable to load the requested file
  4. 高性能滚动 scroll 及页面渲染优化
  5. MySQL在Windows和Linux减少数据库
  6. .net random伪随机数
  7. 今天开始要详细的记录学习sharepoint 的进度和相关的一些资料
  8. Autoware(2)—加载地图数据
  9. haproxy +keepalived 原创
  10. ORACLE备份策略(ORACLE BACKUP STRATEGY)