代码经过编译,链接和装入,最终成为运行的进程。每一个进程作为进程实体都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。
文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
在所有函数以外创建的变量称为全局变量,存储在数据区域的全局变量区。当程序结束时,会释放这些内存。在单个源文件中,静态变量static和全局变量的效果是相同的。因此也是存储在全局变量区。全局变量区的数据如果不进行赋值那么默认为全0,而其他区域如堆栈中的数据则是随机的垃圾数据。
在函数内部创建的变量称为局部变量,存储在数据区域的局部变量区,当函数运行结束时,释放这些内存。
最后,通过new或者malloc分配的内存从堆栈中获得,并且只能通过delete和free进行释放。
例如下面这个例子:

#include <bits/stdc++.h>
using namespace std;void creat(){int a1;//局部变量 ,调用函数时分配 int *a2=new int;//使用new创建的变量 ,调用函数时分配
}
int a3;//全局变量 立即分配
int main (){int a4;//局部变量 立即分配int *a5=new int;//使用new分配,立即分配 creat();//为a1,a4分配//函数执行结束,回收局部变量a1的空间,但不回收a2的空间。
}// main函数执行完毕,回收a4的空间
//程序执行结束 回收a3的空间。

我们可以看到,在程序中我们为a1-5的变量分配了存储空间,但是最后只回收了3个,由new分配出去的空间最后不能够正常回收,这就造成了内存泄漏。
虽然理论上,当进程运行结束时,为其分配的所有空间都会被回收,也包括堆栈上通过new分配出去的空间,也就是说实际上当进程运行结束,关闭窗口以后,a2,a5的内存也被回收。但对于一些较大型的程序而言,在运行期间,内存的不断增加会严重影响其运行速度,所以在堆栈上分配的空间在不需要时回收是一个很好的习惯。

内存空间的分配与回收相关推荐

  1. UGA由哪几部分组成和PGA上内存空间的分配与回收的方式

    一.UGA由哪几部分组成? 由上述图片可知, 一个会话里如果处理的是SQL语句,那么在shared pool中就有该SQL语句对应的Shared  Areas,该Shared  Areas的类型为Sh ...

  2. PGA内存空间的分配与回收

    一.UGA由哪几部分组成? 由上述图片可知, 一个会话里如果处理的是SQL语句,那么在shared pool中就有该SQL语句对应的Shared  Areas,该Shared  Areas的类型为Sh ...

  3. 六、操作系统——内存管理的概念(空间的分配与回收、空间的扩充、地址转换、存储保护)

    一.概述 二.操作系统作为系统资源的管理者,当然也需要对内存进行管理,要管些什么呢? 1. 内存空间的分配与回收 连续分配:指为用户进程分配的必须是一个连续的内存空间. 1. 单一连续分配 在单一连续 ...

  4. 实验四、主存空间的分配和回收模拟

    实验四.主存空间的分配和回收模 物联网工程  王鸾  201306104128 一.        实验目的        为了合理地分配和使用这些存储空间,当用户提出申请主存储器空间时,存储管理必须 ...

  5. 《操作系统》实验报告——主存空间的分配与回收

    理论知识 Linux--Linux C语言编程基础知识 一.实验目的 采用可变式分区管理,使用最佳适应算法实现主存的分配与回收. 通过本次实验,帮助学生理解在可变式分区管理方式下,如何实现主存空间的分 ...

  6. 操作系统——实验叁——主存空间的分配与回收

    一. 实验目的 采用可变式分区管理,使用最佳适应算法实现主存的分配与回收 通过本次实验,帮助学生理解在可变式分区管理方式下,如何实现主存空间的分配与回收. 二. 实验内容 主存是中央处理机能直接存取指 ...

  7. 操作系统实验三:主存空间的分配与回收

    实验三:主存空间的分配与回收 一.实验目的 通过本次实验,帮助学生理解在可变式分区管理方式下,如何实现主存空间的分配与回收. 二.实验内容 主存是中央处理机能直接存取指令和数据的存储器.能否合理而有效 ...

  8. 【操作系统】主存空间的分配和回收

    实验一.主存空间的分配和回收实验 专业:商业软件工程  姓名:杨晶晶  学号:201406114102 一.        实验目的 用高级语言完成一个主存空间的分配和回收程序,以加深对动态分区分配方 ...

  9. 用循环首次适应算法、最佳适应算法和最坏适应算法,模拟可变分区存储管理,实现对内存区的分配和回收管理

    湖南师范大学 信息科学与工程学院 操作系统课程实验报告 实验项目名称: 可变分区存储管理 题目 实验一.可变分区存储管理 一.实验目的: 加深对可变分区存储管理的理解: 提高用C语言编制大型系统程序的 ...

  10. 采用空白文件目录结构管理磁盘空间,实现磁盘空间的分配和回收

    实验题目:采用空白文件目录结构管理磁盘空间,实现磁盘空间的分配和回收 #include"stdio.h" #include"math.h" #define N ...

最新文章

  1. java知识积累——单元测试和JUnit(二)
  2. [译]解密Airbnb的数据科学部门如何使用R语言
  3. Chrome浏览器查看SSL证书信息
  4. 快春运了,做个火车余票查询接口,余票来源12306,图是百度地图
  5. 超炫酷的枪械3D动图,喜欢的不得了!
  6. C++自定义对象如何支持Range-based循环语法
  7. Android 开发笔记___drawable
  8. python3 django连接mysql 数据库
  9. 页面加载速度-合并资源文件
  10. LeetCode-145:二叉树的后序遍历
  11. Ubuntu 通过apt安装VSCode
  12. 用.net中的SqlBulkCopy类批量复制数据 (转载)
  13. 数据分析中会常犯哪些错误,如何解决? 二
  14. html 引入wav,如何通过javascript/html5播放wav音频字节数组?
  15. 图像处理4:最大类间方差法(大津法)
  16. 酷开系统AI智能让生活更简单化
  17. (附源码)spring boot大学毕业设计管理系统 毕业设计 030945
  18. 北大的戴威,为何输给了三本的胡玮炜?
  19. Larval安装使用Excel步骤
  20. oracle,通过plsql创建用户表空间和所属用户示例

热门文章

  1. 程序员到CTO的Java技术路线图
  2. php 二维数组变一维数组,php中怎么将二维数组转为一维数组
  3. 百善孝为先,万恶淫为首
  4. 处理器流水线长度是否存在理论极限?
  5. Jenkins执行shell命令,提示Pseudo-terminal will not be allocated because stdin is not a terminal.
  6. 计算机专业保研面试备考:操作系统
  7. js中统一社会信用代码校验规则
  8. txt音乐播放器PC版免费下载(包含C程序源码与exe文件)
  9. 如何编写GIMP插件(三)
  10. Vue中路由 (Vue Router)