C++基础(动态分配内存)2

一.new与delete
这里写图片描述
c++内存分配的两种方式:静态分配和动态分配
静态分配是在编译时分配相应的存储空间,因为是在编译时分配,要求编译时空间大小明确,数组长度必须为常量,一旦编译完成,这个数组的长度就是固定不变的。
动态分配是程序运行期间根据实际需要动态申请或释放内存。它不需要预先分配存储空间,分配的空间可以扩大或缩小
使用malloc和free动态申请和释放内存:
这里写图片描述
*new运算符结果是指向分配得到的内存空间的指针,如果没有足够的内存空间可以分配,其运算结果是一个0值指针。
销毁对象后,指针p1变成了没有定义,然而它羽然存放所指向对象的地址,所以指针p1不再有效,被称为迷途指针,通常在delete运算后将其设为NULL即0值指针,避免了迷途指针;
用new创建的动态对象使用完后,必须用delete销毁它。
delete只能删除由new创建的动态对象,否则将导致程序错误。
静态内存管理有编译器进行,程序员只是做対象定义(相当于分配),但是动态分配是按照程序员人为的指令进行。
动态分配和释放必须对应,不释放会内存泄漏,后果是随着程序运行多次,可以使用的内存空间越来越少,而释放已经释放的内存会导致程序奔溃
静态分配内存的生命期由编译器自动确定,要么是程序运行期,要么是函数执行期。动态分配内存的生命期由程序员决定,即从分配时开始,至释放时结束。特别地,动态分配内存的生命期允许跨多个函数。
静态分配内存的对象有初始化,动态分配内存一般需要人为
的指令赋初始值
避免释放内存后出现“迷途指针”,应及时设置为空指针*
这里写图片描述

2.动态分配内存应用

2.1动态分配数组
  • 使用动态内存,可以轻而易举的解决在程序运行中产生任意大小的数组
  • 动态分配一维或多维数组的方法是由指针管理数组,二维以上数组按一维数组方式来处理,具体步骤为:
    ①定义指针p;
    ②分配数组空间,用来存储数组元素,空间大小按元素个数计算;
    ③按一维数组方式使用这个数组(例如输入、输出等);若是一维数组,则元素为p[i];若是二维数组则元素为p[i*M+j],其中M为列元素个数,以此类推。
    ④释放数组空间;

    • 例 :计算N*N 二维数组的平均值
      这里写图片描述
    • -

    2.2 动态分配字符串

    • 实际编程中,字符串类型表示文字信息数据,其特点是字符长度不
      固定。通过动态分配字符串,根据程序的需要确定字符串的实际长
      度。
    • 动态分配字符串的方法是由字符指针管理字符串,具体步骤为:
      ①定义字符指针; ②分配字符串空间,用来存储字符串; ③使用这个字符串(例如输入、输出等); ④释放字符串空间

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值