C++面试常见问题——14内存管理
2024-09-07 02:06:12
内存管理
内存管理由三种方式:
- 自动存储
- 静态存储
- 动态存储
自动存储
对于函数的形参、函数内部变量、和结构体变量等,编译器在函数运行过程中在栈中自动对其分配内存,调用结束后对其进行销毁。变量的声明周期只存在于当前代码块,这使得程序员可以在不同函数内使用相同的变量名。
c++对栈存储区的使用可以有效地减少程序所用的内存空间。
int add(int a,int b){
if(a > 0 && b > 0){
int result = a +b; //result的生命周期只存在于if语句内
}
//return result; 此时result已经被销毁,无法再使用
}
静态存储
每个程序对应着一个静态存储区(全局数据区),编译器会对某些程序实体预分配存储地址和内存空间,程序一开始执行这些变量就会被创建,直到整个程序结束才会被释放。
extern用于声明全局变量,分为定义性声明和引用性声明:
extern int GlobalInt = 3; //全局变量需要在声明时初始化,为手动初始化时编译器会自动将其初始化为0
//这就是定义性声明
void fun{
extern double GlobalDouble; //引用性声明,必须有已声明的全局变量GlobalDouble
...
}
动态存储
人为的开辟空间与释放空间,都由人手动设定(千万别忘了释放!!!)
最新文章
- 1014: [JSOI2008]火星人prefix
- js替换字符串问题
- 安装confluence
- android 内存泄露之jni local reference table overflow (max=512)
- yum安装于卸载软件常见命令
- IT项目经理
- SharePoint 2013 安装
- 【转】MYSQL 使用SQLyog导入遇到问题解决
- JavaScript:AOP实现
- c# Char &;&; string
- springboot全局异常处理
- 开源:Taurus.MVC 框架 (已支持.NET Core)
- excel 常用函数和实现功能经验总结积累
- ajax请求完成执行的操作
- Nginx_status显示结果详解
- 应用开发之WinForm环境
- FocusBI: 使用Python爬虫为BI准备数据源(原创)
- 生活中的goto
- Nginx服务监听端口修改启动bug
- 读取XML文件的指定节点的值 并转换为Item