C程序在内存中的分区情况
来源:互联网 发布:佛道 知乎 编辑:程序博客网 时间:2024/05/10 04:12
当程序被加载到内存前被组织成三部分:
一、代码区
二、静态存储区
三、动态存储区
1) 代码区
这是将要执行程序的机器语言表示(是计算器能识别的二进制表示)
2)静态存储区
这段内存区是程序在编译和连接时分配。
主要存放的变量是:全局变量(global)、静态的变量(static修饰的)。
这段内存区按照是否初始化过 被分为:已初始化的数据和未初始化的数据(即是BSS段,默认为0)
3)动态存储区
这段内存区在程序的调用和执行时分配,主要存放一些动态分配的变量等。。
又分为:堆区(heap)和栈区(stack)。
堆区:通过malloc分配的内存区。
栈区:存放的是局部变量和函数的形参等。
常常细分:
代码区
全局变量与静态变量区
局部变量区,即栈区
动态存储区,即堆区。
全局变量区:变量定义main函数的外面。
变量的生存周期:程序运行结束
变量的使用范围:对整个文件有效。
静态区:static 修饰的变量。变量的生存周期程序运行结束,变量的使用范围,一种在函数内部使用 static ,那么它的范围就在函数内部有效(即为生存期问题,保存上一次执行结果的值),另外一种 在main函数外面使用static,那么它的作用范围就当前文件有效,其他的文件不能范问(即为作用域问题)。
栈区:局部变量所申请的区域,局部变量在函数调用时,申请空间,在函数结束时,释放空间。它的使用范围一般在函数内部。
堆区:malloc 申请的变量,手动申请,手动释放。
【7】动态内存的申请
void *malloc(size_t size);
功能:申请一段内存空间(堆区)
参数:size 申请内存空间的大小。
返回值:成功 返回所申请空间的首地址,出错 NULL
void free(void *ptr);
功能:释放申请的内存空间
参数:要释放空间的首地址
返回值:无
0 0
- C程序在内存中的分区情况
- c/c++程序在内存中的分布
- c/c++程序在内存中的分布
- c/c++程序在内存中的分布
- C语言--程序在内存中的分布
- c/c++程序在内存中的分布
- C程序在内存中的布局
- C语言 程序在内存中的分布
- //String 在内存中的情况
- c语言数组变量在内存中的连续分配情况
- C 语言变量在内存中的分布情况
- c 程序中的各个段在内存中的位置解析
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的存放
- 程序在内存中的分布
- 基数排序
- ListView的使用技巧
- Understanding C/C++ Strict Aliasing
- play framework 2.5.3 学习和使用过程中的“坑”
- 搜索技巧
- C程序在内存中的分区情况
- html5web通信-跨文档消息传输
- ListView 底部分割线如何显示
- JSP内置对象
- Codeforces #349 div1 C. Codeword 组合数学 递推
- 英语作文模板
- Hello, world!
- 哪些 Python 库让你相见恨晚?
- Hexo让博客梦变的简单