• 直接管理内存——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一个指针后,该指针就变为空悬指针了

  • 相关阅读:
    多线程2
    多线程1
    Mybatis动态代理开发
    Mybatis的mapper.xml文件也是要加文件头的
    ssm框架只使用mybatis配置sqlmapconfig.xml
    ssm整合之web.xml配置
    SpringMVC三大组件的配置
    spring开启注解配置
    如何开发 Sublime Text 2 的插件
    ASP.NET MVC 5改进了基于过滤器的身份验证
  • 原文地址:https://www.cnblogs.com/xzxl/p/7738152.html
Copyright © 2020-2023  润新知