• C++ Primer 有感(new和delete表达式)


        定义变量时,必须指定其数据类型和名字。而动态创建对象时,只需指定其数据类型,而不必为该对象命名。取而代之的是,new表达式返回指向性创建的指针。


    1.动态创建对象的默认初始化

        对于类类型的对象,用该类的默认构造函数初始化;而内置类型的对象则无初始化。

    string *ps = new string;   //initialized to empty string
      int *pi = new int;  //pi points to an uninitialized int

        对于内置类型或没有定义默认构造函数的类型,采用不同初始化方式则有显著的差别:

    int *pi = new int;  //pi points to an uninitialized int
     int *pi = new int( ); //pi points to an int value-initialized to 0

    第一个语句的int型变量没有初始化,而第二个语句的int变量这被初始化为0.


    2.如果new表达式无法获取需要的内存空间,系统将抛出名为bad_alloc的异常。


    3.如果指针的值为0,则在其上做delete操作时合法的,但这样做没有任何意义:

     int *ip = 0;
     delete ip;

    C++保证:删除0值的指针式安全的。


    4.删除指针后,该指针变成悬垂指针。悬垂指针指向曾经存放对象的内存,但该对象已经不再存在了。悬垂指针往往导致程序错误,而且很难检测出来。

  • 相关阅读:
    parse_str() 函数把查询字符串解析到变量中。
    ThinkPHP函数详解:L方法
    ThinkPHP函数详解:F方法
    PHP defined() 函数
    Ajax beforeSend和complete 方法
    mdb文件怎么打开
    网盘资料
    win7下IIS的安装和配置
    perl5 第十一章 文件系统
    perl5 第十章 格式化输出
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6173020.html
Copyright © 2020-2023  润新知