zoukankan      html  css  js  c++  java
  • c++ new delete

    1.              当你使用new时,有两件事会发生。第一,内存被配置(透过函数operator new)。第二,会有一个(或以上)的constructors针对此内存被调用。当你使用delete时,也有两件事发生:一个(或以上)的destructors会针对此内存被调用,然后内存被释放(透过函数operator delete)。

    2.              如果你使用delete是未加括号,delete便假设删除对象是单一对象。否则便假设删除对象是个数组。

    3.              string *stringPtr1 = new string;

    string *stringPtr2 = new string[100];

    ……

    delete stringPtr1;

    delete [] stringPtr2;

    如果你对着stringPtr1使用“[]”形式,其结果未定义。如果你对着stringPtr2没有使用“[]”形式,其结果亦未定义。犹有进者,这对内建型别如int者亦未定义,即使这类型别并没有destructors。

    4.              因此,游戏规则很简单,如果你在调用new时使用了[],则你在调用delete时也使用[],如果你在调用new的时候没有[],那么你也不应该在调用时使用[]。


     

  • 相关阅读:
    Collections和Arrays常用方法
    集合(三)------双列集合
    集合(二)------单列集合
    集合(一)----------概述
    泛型
    线程
    Math类和Random类(数学公式相关类)
    时间相关的类
    Runtime类及其常用方法
    第65题:有效数字
  • 原文地址:https://www.cnblogs.com/cloudseawang/p/1162219.html
Copyright © 2011-2022 走看看