zoukankan      html  css  js  c++  java
  • 直接管理内存——new和delete

    一、运算符new

    1. 使用new动态分配对象

    • 在自由空间分配的内存是无名的,故new无法为其分配的对象命名,而是返回一个指向该对象的指针
    • int *pi = new int;  //pi指向一个动态分配的、未初始化的无名对象
    • 表达式“new int”:①在自由空间构造一个 int 型对象;②返回指向该对象的指针

    2. 使用new动态分配并初始化对象

    • int *pi1 = new int;  //默认初始化,*pi1的值未定义
    • int *pi2 = new int();  //对动态分配的对象进行值初始化,*pi2的值为0
    • int *pi3 = new int(24)  //直接初始化,pi3指向的对象的值为24
    • int *pi4 = new int{24}  //同上

      注:对于定义了自己的构造函数的类类型来说,值初始化和默认初始化的效果是一样的;但对于内置类型来说,值初始化的内置类型对象有着良好定义的值,而默认初始化的对象的值是未定义的。

    二、运算符delete

    1. 传递给delete的指针必须指向动态分配的内存,或者是一个空指针

    2. const对象是可以销毁的

    3. 空悬指针:当delete一个指针后,该指针就变为空悬指针了

  • 相关阅读:
    读《大道至简》第六章感想
    课后作业之数组
    读《大道至简》第五章感想
    课后作业四
    读《大道至简》第四章之感想
    java上课作业(第三次)
    读《大道至简》第三章感想
    作业
    小组项目冲刺第三天的个人总结
    小组项目冲刺第二天的个人总结
  • 原文地址:https://www.cnblogs.com/xzxl/p/7738152.html
Copyright © 2011-2022 走看看