网站首页 > 技术文章 正文
C语言内存分布(内核、变量,堆栈等)
内核区是提供给操作系统使用的。栈区是给局部变量使用的,局部变量是函数内定义的变量,包括函数系数;程序调用时把局部变量存的数据压入栈,程序退出时把局部变量存的数据弹出栈,压栈-栈指针指向此次所压数据的最底端;出栈-栈指针指向此次所压数据的最顶端,栈区向下增长即数据随着压栈往下存储(如图2所示)。局部变量的作用范围是函数调用时生效,函数退出时失效。
动态链接库是程序运行时所需的库。堆区是函数malloc申请的内存区,堆区向上增长即随着malloc申请的次数曾多往上占用空间(不一定存储数据)。
bss是未初始化的全局变量(在所有函数外申请的变量)和未初始化的静态变量(static修饰的变量)区,例如编写day.c文件int a; int main(void){...return 0;} int day(void){static int b;...return 0;},其中a是未初始化的全局变量,b是未初始化的静态变量。
data区是已初始化的全局变量和已初始化的静态变量区,例如前面的int a=112;...static int b=113;...,其中a是已初始化的全局变量,b是已初始化的静态变量。
只读数据区是给字符串常量存储的,例如字符串“Hello NMLINUX”等。
代码区是给正在运行或者将要运行的程序用的。
(C语言内存分布图如图1所示)。
猜你喜欢
- 2025-07-18 NDK打印调用堆栈(java 打印调用堆栈)
- 2025-07-18 还有多少人搞不懂堆内存和栈内存的区别?
- 2025-07-18 微软为Windows 10版本1903推出了新的服务堆栈
- 2025-07-18 浅析Cortex-M系统堆栈机制(堆栈式exmor rs cmos)
- 2025-07-18 使用Photoshop做最简单快捷的“堆栈”风光秀
- 2025-07-18 [小C图述馆]拍照控们知道堆栈式和背照式手机摄像头的区别吗?
- 2025-07-18 详解STM32单片机的堆栈(stm32f4 堆栈空间)
- 2025-07-18 130.C# Stack 堆栈(c#堆栈溢出)
- 2025-07-18 全传感器读出速度表格分享,看看堆栈/部分堆栈到底有多强?
- 2025-07-18 文化底蕴的堆栈(文化底蕴的沉淀)
- 最近发表
-
- Qt编程进阶(63):Qt Quick高级控件的使用
- Qt编程进阶(47):QML鼠标事件处理(qt编程难不难)
- 使用Xamarin和Visual Studio开发Android可穿戴设备应用
- Qt使用教程:创建Qt Quick应用程序(三)
- QML性能优化 | 常见界面元素优化(qml布局自适应大小)
- Qt使用教程:创建移动应用程序(二)
- Qt Quick 多媒体开发播放音乐和视频
- Qt使用教程:创建Qt Quick UI表单(三)
- 如何将 Qt 3D 渲染与 Qt Quick 2D 元素结合创建太阳系行星元素?
- QML控件:TextInput, TextField, TextEdit, TextArea用法及自定义
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- nfs (25)
- springbatch (28)
- oracle数据库备份 (25)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- c 数组 (33)
- pascal语言教程 (23)
- ppt 教程 (35)
- java7 (24)
- 自适应网站制作 (32)
- server服务自动停止 (25)
- 超链接去掉下划线 (34)
- 什么是堆栈 (22)
- map entry (25)
- ubuntu装qq (25)
- outputstreamwriter (26)
- fill_parent (22)