C++之存储空间的动态分配和释放
来源:互联网 发布:网络大专多少钱一年 编辑:程序博客网 时间:2024/06/09 15:52
很多时候,我们需要根据问题的实际规模来定义数组的大小,即确定实际需要使用的存储空间的大小,这个时候就要用到动态申请、释放存储空间的方法。
一般情况下,变量存储空间的分配和释放是由系统自动完成的,不需要我们的干预。
- 对于静态变量,编译时确定其空间,运行时分配,运行结束时自动释放空间。
- 对于动态变量,程序运行到其作用域的开始和结束处由系统动态分配、撤销其空间。
系统对自动分配内存的变量的访问方式有两种:
- 通过变量名直接访问
- 通过指针间接访问
在程序运行中动态申请、释放内存的变量,只能通过指针间接访问。在C++中,new 用于动态申请内存,delete 用于释放。注意:这些内存空间在程序结束前的适当时刻必须通过delete释放。
实例
#include <iostream>using namespace std;int main(){ int n, *p, i; cin >> n;//申请一个一维数组空间,数据类型是int,返回该内存空间的起始地址 p = new int[n]; for (i=0; i<n; i++) cin >> p[i]; for (i=0; i<n;i++) cout << p[i] << '\t'; cout << '\n';//释放new动态申请的内存空间 delete []p; //==delete [n]p == delete p; return 0;}
注意:
new运算符有四种格式
- p = new int;
- p = new int(8);
- p = new int[n];
- p = new int[m][n];
其中只有格式2内存空间初始化,其他的内存空间初始值是不确定的,需要使用后续的赋值语句和通过指针间接的对其赋值。例如
p = new int; //返回申请到的内存的起始地址*p = 8;(int)num = *p;
当然,不是每次申请都能成功的。为了保证程序正确执行,最好在new后测试返回的地址。若成功,返回空间的首地址;否则返回null空指针。然后对返回值进行相关处理。如下:
float *p;p = newe float[10];if (p == NULL){ cout << "动态申请失败,程序终止执行!"; exit(3);}else #成功则执行程序... delete p;
阅读全文
0 0
- C++之存储空间的动态分配和释放
- 二维指针、数组指针和指针数组存储空间的动态分配和释放
- Linux C 存储空间动态分配
- 存储空间的分配和释放
- C++_动态存储空间的分配和释放
- C++_动态存储空间的分配和释放
- C++_动态存储空间的分配和释放
- 二维数组的动态分配和释放(C和C++实现)
- 二维数组动态分配和释放(c/c++)
- C 二维数组动态分配和释放
- C 二维数组动态分配和释放
- C语言 二维数组动态分配和释放
- c\c++二维数组动态分配和释放
- C 二维数组动态分配和释放
- C语言 二维数组动态分配和释放
- 二维数组的动态分配和释放
- C语言 局部变量存储空间的分配和释放 奇怪现象及猜想
- C和C++如何动态分配和释放内存,他们的区别是什么
- Flask
- Linux内核如何装载和启动一个可执行程
- eclipse 阿里编码规范插件安装与使用
- Kaggle 数据挖掘比赛经验分享
- react-router打包后打开路由页面空白
- C++之存储空间的动态分配和释放
- HDU 3549 Flow Problem
- OutputDebugString完美封装
- 接口 登录、注册、信息
- 梯度下降法的步长到底怎么确定?
- 设计模式(二十四)——访问者模式
- hadoop教程网站
- 最小二乘、ridge、lasso的概率论原理
- JDBC 写入mysql 中文乱码 及找不到表