浅谈C语言程序分区
来源:互联网 发布:免费制谱软件 编辑:程序博客网 时间:2024/06/06 02:01
学过C语言的应该都知道程序分区这个概念,只是可能不是那么的熟悉,下面就简要的谈论一下C程序的分区。
比如在一个C程序中写一个i全局变量int a = 10;那么这个整形变量a存放在哪儿,又或者是函数中定义的,又该放在哪儿。
1、未初始化的全局变量和初始化为0的全局变量(.bss 段)
bss类型的全局变量只占运行时的内存空间,而不占用文件空间。存在于整个程序运行过程中。
2、初始化过且非零的全局变量(.data 段)
data类型的全局变量既占文件空间又占用运行时的内存空间。存在于整个程序运行过程中。
3、常量数据(.rodata 段)
常量不一定放在.rodata段,有的立即数与指令编码在一起放在.text 段中。
对于一个字符串常量,编译器会自动去掉重复的字符串,保证一个字符串在一个可执行文件中只存在一份复制。
.radata在多个进程间是共享的,提高运行空间利用率。
修改常量会出现段错误。
一些系统中会把rodata放在ROM中(或者NOR Flash),运行时直接读取,无需加载到RAM中。
4、代码(.text 段)
存放代码和部分整数常量,和.rodata段相似,主要不同的是这个段可以执行。
5、栈(stack)
可以用于实现函数的调用,管理临时变量。
栈向下增长。
6、堆(heap)
由程序员手动分配和释放的一块内存区域。
注意malloc、realloc、free的用法。这里不再详细讲解。
阅读全文
1 0
- 浅谈C语言程序分区
- 浅谈c语言内存分区
- 浅谈c语言内存分区
- C 语言程序分区
- C语言内存分区
- c语言内存分区
- C语言内存分区
- C语言内存分区
- C语言编程浅谈
- 浅谈C语言学习方法
- C语言的浅谈!
- 浅谈C语言学习心得
- 浅谈C语言学习方法
- C语言内存浅谈
- 浅谈C语言学习方法
- 【C语言】 浅谈指针
- 浅谈C语言数据类型
- C语言内存浅谈
- Shell中awk文本处理工具和sed文本处理工具
- MATLAB 中常用分类器 总结
- 简述银行会计科目的分类
- node学习篇——mongoose
- 分分钟搞懂域名解析----------A记录/DNS服务/CNAME记录
- 浅谈C语言程序分区
- android上如何实现后台日志记录并写文件到sd卡
- XML解析
- 第八届蓝桥杯B组国赛总结
- MyEclipse 配置maven项目pom.xml设置 上传项目到nexus私服,通过中转仓库下载插件,以及nexus的配置
- 【简记】大规模Web开发技术(第十一章)
- XML学习---项目实战:联系人管理系统
- Redis主从复制 常见疑问
- 解决用远程连接mysql数据库出现1045 access denied for user 'root'@'localhost' using password yes