C语言程序的文件格式
来源:互联网 发布:融合软件下载 编辑:程序博客网 时间:2024/05/21 00:18
今天在一篇文章看到以下信息,讲解关于ELF文件格式的内容,觉得有必要记录下来以备查阅:
const常量, 字符串字面值都是位于.rodata段, 在链接时.rodata段与.text段合并到Text Segment中, 在加载运行时操作系统把Text Segment的页面只读保护起来, 防止意外改写.
- 操作系统的内存管理与编译器的语义检查为全局const变量提供了双重保护.
- 函数的局部变量在栈上分配, 如果把局部变量声明为const就少了一层保护, 操作系统无法对栈看见只读保护(因为栈上的其他数据要求可读可写)
编译器会给函数中的static变量的符号名加一个后缀, 比如a会变成a.1706(某种程度上, 跟C++的重载函数的处理差不多)
.bss段与.data段的不同之处在于, .bss断在文件中不占存储空间, 加载到内存时这个段用0填充.
C语言规定全局变量和static变量(不管是函数里还是函数外)如果不初始化初值都为0, 未初始化的和明确初始化为0的全局变量,static变量都会分配在bss段.[bss是历史遗留下来的名词, 全称是"Block Started by Symbol", 最初是IBM 704汇编器的一条伪指令名字, 沿用至今. 不过你也可以记成"Better Save Space", 因为.bss段在文件中不占存储空间]
虽然栈是从高地址向低地址增长的,但是数组跟结构体都是从低地址向高地址排列.
原文地址:
Linux C一站式编程答案
0 0
- C语言程序的文件格式
- c语言的程序
- C语言(头文件格式)
- C语言的本质(30)——C语言与汇编之ELF文件格式
- c 语言小的程序
- fft的c语言程序
- 数码管的c语言程序
- c语言的搞怪程序
- c语言程序的运行
- 我的c语言程序
- 简单的C语言程序
- 我的C语言程序
- 我的c语言程序
- C语言程序的构成
- C语言的一些程序
- 好玩的c语言程序!
- 常见的c语言程序
- 简单的c语言程序
- 使用pthread_cancel终止线程的填坑历程
- 【leetcode】Ugly Number-----Java
- [乐意黎转载]Tomcat 8.0.39 And Tomcat 8.5.8 Fails Handling Requsest
- maven项目的一些常见问题
- c3p0详细配置
- C语言程序的文件格式
- ip最简校验
- 我是一块硬盘(上)
- 如何通过docker来搭建elasticsearch环境呢?
- 使用Tesseract-OCR训练文字识别记录
- JSP2.0表达式语言
- cpufreq 五种模式
- 硬件学习笔记:MOS管
- android 蓝牙源码分析