内存管理

内存管理由三种方式:

  1. 自动存储
  2. 静态存储
  3. 动态存储

自动存储

对于函数的形参、函数内部变量、和结构体变量等,编译器在函数运行过程中在栈中自动对其分配内存,调用结束后对其进行销毁。变量的声明周期只存在于当前代码块,这使得程序员可以在不同函数内使用相同的变量名。

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
...
}

动态存储

人为的开辟空间与释放空间,都由人手动设定(千万别忘了释放!!!)

最新文章

  1. 1014: [JSOI2008]火星人prefix
  2. js替换字符串问题
  3. 安装confluence
  4. android 内存泄露之jni local reference table overflow (max=512)
  5. yum安装于卸载软件常见命令
  6. IT项目经理
  7. SharePoint 2013 安装
  8. 【转】MYSQL 使用SQLyog导入遇到问题解决
  9. JavaScript:AOP实现
  10. c# Char && string
  11. springboot全局异常处理
  12. 开源:Taurus.MVC 框架 (已支持.NET Core)
  13. excel 常用函数和实现功能经验总结积累
  14. ajax请求完成执行的操作
  15. Nginx_status显示结果详解
  16. 应用开发之WinForm环境
  17. FocusBI: 使用Python爬虫为BI准备数据源(原创)
  18. 生活中的goto
  19. Nginx服务监听端口修改启动bug
  20. 读取XML文件的指定节点的值 并转换为Item

热门文章

  1. 「luogu3402」【模板】可持久化并查集
  2. Java基础知识笔记第七章:内部类和异常类
  3. Spring学习(三)
  4. shell脚本中执行shell脚本(2)
  5. 【PAT甲级】1009 Product of Polynomials (25 分)
  6. java 实现图片上传功能
  7. Linux基础网络配置
  8. Flask - 请求扩展,钩子函数(Django的中间件) --> 请求前,中,后,
  9. 十六 Spring的JDBC模版入门,默认连接池
  10. MySql数据库慢查询