条款16:成对使用 new和delete时要采取相同的形式
2024-09-05 13:04:49
std::string* stringPtr1=new std::string;
srd::string* stringPtr2=new std::string[100];
对应地 delete也应该使用相同的形式:
delete stringPtr1;
delete [] stringPtr2;
规则就是:使用new时用了[],必须在对应调用delete时也要使用[]。
如果new时没有用[],则调用delete时也不该用[]
在typedef中也一样:
当程序员以new创建tyoedef类型对象时,该以哪种delete形式删除之。
typedef std:: string AddressLines[4];//每个人的地址有4行,每行是1个string
由于AddressLines是个数组,如果这样使用new:
std::string* pa1 = new AddressLines;
那就必须匹配“数组形式”的delete:
delete pa1;//行为未定义;
delete [] pa1;//OK
为避免此类错误,尽量不要对数组形式做typedef动作。
记住:
如果在new表达式中使用[],必须在相应的delete表达式中也使用[]。
如果在new表达式中不使用[],则一定要在delete表达式中使用[]
最新文章
- 今年暑假不AC
- 规则引擎集成接口(九)Java类对象
- 由一次程序崩溃引起的对new表达式的再次学习
- C#中的IntPtr类型
- SQL JOIN
- jquery给height拼接动态变量
- 【py】配置python环境
- 2015-09-17 001 日志与对话框公用类_public
- MySql配置参数很全的Mysql配置参数说明
- TTS异步+同步
- dll间接应用问题
- 【java系列】java开发环境搭建
- 【python小练习】简单的猜数字游戏
- Python2.7-内置函数
- docker使用自定义镜像zabbix服务
- API手册 常用功能
- Docker 搭建 etcd 集群配置
- Notes of fwt
- STM32之中断
- Android 串口蓝牙通信开发Java版本
热门文章
- 【LeetCode】Recursion(共11题)
- ZYNQ的Linux Linaro系统镜像制作SD卡启动(仅使用mkfs部分,其他部分待看)
- ivew select组件 DatePicker组件的清空
- Python repr, str, eval 使用小记 及 str 和 repr的区别
- ajax处理返回的三种格式(json格式 , xml通用格式 , html文本格式)(数据类型:整数、字符串、数组、对象)(基础最重要!)
- Ubuntu用户权限管理(chown, chmod)
- sql server 2000安装程序配置服务器失败
- 【MySQL】selectKey获取insert后的自动主键
- HDU 4812 (点分治)
- 8 November in 614