条款16 成对使用new和delete时要採取同样形式

#include <iostream>
#include <string>
using namespace std; /* 条款16:成对使用new 和 delete时要採取同样形式 假设你在new表达式中使用[],必须在对应的delete表达式中也使用[]。假设在new其中没有使用[],那么delete中也
不能使用[],两者是成对出现的。 */
int main()
{ //第一版 : 报错
/*
string * p_str = new string[1000];
delete p_str;
*/
/*
当我们使用delete的时候,要考虑即将被删除的指针。所指的是单一对象还是对象数组;数组所用的内存通常还包含“数组大小”的记录
以便delete知道须要调用多少次析构函数,而单一对象的内存则没有这笔记录
*/
//第二版 能够通过
string * p_str = new string[1000];
delete []p_str; //第三版:报错。由于这样,delete会读取若干内存并将它解释为“数组大小”,然后開始调用多次析构函数,浑然不知它所处理的那块内存不但不是个数组。并且还不是它想要的对象类型
/*
string *p_str2 = new string;
delete []p_str2;
*/ //第四版 能够通过
string *p_str2 = new string;
delete p_str2; //第五版:报错,由于使用typedef后,这里一个string* 就是相当于new string[4]一样
/*
typedef string AddressLines[4]; //每一个人的地址有4行,每行是一个string
string* p1 = new AddressLines;
delete p1;
*/ //第六版 通过
typedef string AddressLines[4]; //每一个人的地址有4行。每行是一个string
string* p1 = new AddressLines;
delete []p1; return 0;
}

effctive C++ 读书笔记 条款 16的更多相关文章

  1. 《C#本质论》读书笔记(16)构建自定义集合

    16.1 更多集合接口 集合类(这里指IEnumerable层次结构)实现的接口层次结构 16.1.1 IList<T>与IDictionary<TKey,TValue> 字典 ...

  2. 《python核心编程》读书笔记--第16章 网络编程

    在进行网络编程之前,先对网络以及互联网协议做一个了解. 推荐阮一峰的博客:(感谢) http://www.ruanyifeng.com/blog/2012/05/internet_protocol_s ...

  3. effective C++ 读书笔记 条款08

    条款08  别让异常逃离析构函数: 假设在析构函数其中发生了异常,程序可能会过早结束或者导致不明白行为(异常从析构函数传播出去) 看代码: #include <iostream> usin ...

  4. 《Effective C++》读书笔记 条款02 尽量以const,enum,inline替换#define

    Effective C++在此条款中总结出两个结论 1.对于单纯常量,最好以const对象或enum替换#define 2.对于形似函数的宏,最好改用inline函数替换#define 接下来我们进行 ...

  5. effective C++ 读书笔记 条款11

    条款11: 在operator= 中处理"自我赋值" 在实现operator=时考虑自我赋值是必要的就像 x=y .我们不知道变量x与y代表的值是否为同一个值(把x和y说成是一个指 ...

  6. C++ primer plus读书笔记——第16章 string类和标准模板库

    第16章 string类和标准模板库 1. string容易被忽略的构造函数: string(size_type n, char c)长度为n,每个字母都为c string(const string ...

  7. 《Effective C++》读书笔记 条款03 尽可能使用const 使代码更加健壮

    如果你对const足够了解,只需记住以下结论即可: 将某些东西声明为const可帮助编译器侦测出错误用法,const可被施加于任何作用于内的对象.函数参数.函数返回类型.成员函数本体. 编译器强制实施 ...

  8. INSPIRED启示录 读书笔记 - 第16章 市场调研

    常用的市场调研工具和方法 用户调查:第一,设计调查问卷需要技巧和经验,不是一件容易的事:第二,调查结果为获得解决方案提供了一要途径,但不是解决方案本身 产品使用分析:使用分析工具记录用户使用产品的行为 ...

  9. R in action读书笔记(16)第十二章 重抽样与自助法之 置换检验

    第十二章:重抽样与自助法 本章,我们将探究两种应用广泛的依据随机化思想的统计方法:置换检验和自助法 12.1 置换检验 置换检验,也称随机化检验或重随机化检验. 有两种处理条件的实验,十个受试者已经被 ...

随机推荐

  1. GDB使用例子

    GDB使用例子 一般来说GDB主要调试的是C/C++的程序.要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点. ...

  2. 【Ts 5】Httpclient的应用和封装

    一.基本概述 1.1,什么是Httpclient HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编 ...

  3. HDu-1247 Hat’s Words,字典树裸模板!

    Hat's Words 题意:给出一张单词表求有多少个单词是由单词表里的两个单词组成,可以重复!按字典序输出这些单词. 思路:先建一个字典树,然后枚举每个单词,把每个单词任意拆分两部分然后查找. 目测 ...

  4. shrio注解的方式进行权限控制

    除了通过API方式外,Shiro 提供Java 5+注解的集合,以注解为基础的授权控制.在你可以使用Java 注释之前,你需要在你的应用程序中启用AOP 支持. Shiro注解支持AspectJ.sp ...

  5. [luoguP2325] [SCOI2005]王室联邦(树分块乱搞)

    传送门 想了半小时,没什么思路.. 看了题解,是个叫做树分块的奇奇怪怪的操作.. 题解 树分块的研究 #include <cstdio> #include <cstring> ...

  6. request response session的常用方法

    .request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例. 序号 方 法 说 明 1 object ...

  7. 关于a标签的onclick和href谁先执行的问题

    今天上午遇到一个问题,我想在a标签跳转的时候增加一些程序上的判断,但又不会影响a标签的正常跳转,于是就有了这篇文章. 我的具体代码是这样的: <a href="http://www.m ...

  8. 使用nginx时,让web取得原始请求地址

    问题描述 当使用nginx配置proxy_pass参数以后,后端web取得的Request.Uri是proxy_pass中配置的地址,而不是client访问的原始地址 举例说明: 假设nginx配置文 ...

  9. linux shell简单实现数据库自动备份

    以centos系统为例,实现数据库自动备份.1.写一个shell: 12 #! /bin/bashmysqldump -cp --user=root --password='123' dbName | ...

  10. Delphi GDI对象之绘制文本

    转载:http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579185.html 基本绘图操作(Basic Drawing Operations ...