一步一步写算法(之内存)
来源:互联网 发布:手机解压软件中文版 编辑:程序博客网 时间:2024/06/02 05:31
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
内存是程序运行的基础。所有正在运行的代码都保存在内存里面。内存需要处理各种各样的数据,包括键盘的数据、鼠标的数据、usb的数据、串口的数据、摄像头的数据,那么这些数据经过程序的处理之后,就要进行输出到串口、屏幕、usb等。
内存只有一个,但是程序里面的空间有很多种。但是内存中的数据类型只有几种,比如说全局中的数据、堆中的数据、临时堆栈中的数据。那么他们有什么区别呢?我们可以通过代码发现一些问题。
(1)全局数据
- static int value = 100;
- void process()
- {
- static int number = 10;
- }
(2)堆数据
- void process()
- {
- char* point = (char*)malloc(100);
- free(point);
- }
(3)临时数据
- void process()
- {
- char name[100] = {0};
- return;
- }
这篇博客的内容比较简单,主要讲述了内存的一些内容。其实关于内存的东西还很多。这里说明一下只是让大家有一个了解:
1) 全局数据是我们喜欢使用的类型,用起来比较方便
2)堆数据是系统给我们安排的空间
3)堆栈空间只能存在于当时的函数之中,函数返回即失去意义
虽然我们上面这么说,但是这三个概念有的时候也是可以相互迁移的,比如说:
1) 有的时候,我们为了测试的需要,首先构建一个全局内存池,以后测试的内存都是通过自定义的malloc在内存池中分配的,所以这个时候,堆分配和全局联系在了一起。
全局内存空间 < =========> 内存池 < =========> 本地空间分配
2) 如果我们使用的函数空间比较小,那么所有的操作就可以在一个函数内部完成了,那么这时候全局空间和临时堆栈是不是一致的呢
全局空间 < =============> 本地堆栈
上面的说法有些绕,但是我们的目的只是想让大家时刻明白:
a)必须时刻明白我们的数据在哪块空间里面
b)内存会不会越界
c)内存会不会泄露
d)内存访问的数据是否依然有效
【预告: 下面的博客开始介绍线性空间的内容】
- 一步一步写算法(之内存)
- 一步一步写算法(之内存)
- 一步一步写算法(之内存)
- 一步一步写算法(之内存)
- 一步一步写算法(之)
- 一步一步写算法(开篇)
- 一步一步写算法(之)
- 一步一步写算法(之)
- 一步一步写算法(开篇)
- 一步一步写算法(开篇)
- 一步一步写算法(开篇)
- 一步一步写算法(开篇)
- 一步一步写算法(之洗牌算法)
- 一步一步写算法(之 A*算法)
- 一步一步写算法(之 算法总结)
- 一步一步写算法(之 算法总结)
- 一步一步写算法(算法总结)
- 一步一步写算法(之 算法总结)
- 第二天完善登录
- 修改disk驱动监控文件系统的IO特征
- 一步一步写算法(之递归和堆栈)
- js简易抽奖与时钟
- 计算CellBlock的大小
- 一步一步写算法(之内存)
- 遍历整个html文档 并打印出该html文档中的所有文本节点 属性节点 元素节点
- Java简单电子相册
- How to Configure Eclipse for Python
- 在ARM下编译chat和pppd
- 12-02-21
- C#计算时间差函数TimeSpan的应用
- intel 945 集成显卡 UBUNTU 宽屏 调节分辨率
- bash脚本文件中为什么以#!开头