C++基础(动态分配内存)2
来源:互联网 发布:java redis分布式锁 编辑:程序博客网 时间:2024/06/05 00:41
一.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 动态分配字符串
- 实际编程中,字符串类型表示文字信息数据,其特点是字符长度不
固定。通过动态分配字符串,根据程序的需要确定字符串的实际长
度。 - 动态分配字符串的方法是由字符指针管理字符串,具体步骤为:
①定义字符指针; ②分配字符串空间,用来存储字符串; ③使用这个字符串(例如输入、输出等); ④释放字符串空间
- 例 :计算N*N 二维数组的平均值
- C++基础(动态分配内存)2
- C动态分配内存
- 【c++】C++ 动态分配内存
- C中动态分配内存
- C语言动态分配内存
- C动态分配内存
- C语言动态分配内存
- C语言--动态分配内存
- C动态分配内存
- NDK开发学习之C学习基础篇-2(函数指针,字符串,动态分配内存)
- c语言—指针基础(8:动态分配内存)
- C---基础动态分配
- C++基础之动态分配内存
- C++基础之动态分配内存
- C中关于动态分配内存
- C语言的动态分配内存
- C语言中动态分配内存
- C/C++ 动态分配内存比较
- 二级联动添加表格及删除按钮弹出对话框
- 下载积分攻略: 1. 个人设置里进行手机绑定CSDN账户 奖励50分 (右上角设置-账户安全-手机绑定) 2. 完成任务送若干分积分 http://task.csdn.net/ 3. 上传有
- 构造方法
- 001 电脑蓝屏断电等导致虚拟机无法打开的解决方案
- java异常处理Throwable类
- C++基础(动态分配内存)2
- 浅谈高并发解决方案
- details与summary标签使用
- 最小公倍数
- 汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
- 无人机平台--控制平台--组成设想
- Redis【入门】
- 使用复述,实现分布式锁及其优化
- 回文数