- 论坛徽章:
- 0
|
临时变量,static,malloc分别申请在哪里?
原帖由 "Annihilus" 发表:
使用C 语言或汇编语言编写的内容最终可以分为三个区域
CODE section 存储程序代码和ROM数据
DATA section 存储带初始值的读写数据
BSS section 存储没有初始值的数据
例如:
int a; <- 存放在BSS 段
int b=..........
这位兄弟是做嵌入系统的吧. 我对此没有经验. 不过segment 和 section是不同的概念, 至少在我们现在讨论的范畴里.
系统的LOADER只管段, 它看可执行程序就是分几段, CODE(TEXT), DATA,HEAP. 它根据可执行程序要求建立段, 把程序从载体(ROM或磁盘)map到进程. 然后控制转给LINKER. LINKER看程序就是区:data,bss,got,reloc,debug,....
一般TEXT段里有如下区(linux):
text, rodata,hash,dynstr,dynsym,rel,got,plt
DATA 段里有如下区:
data,bss,got,dynamic
readelf -a 会县示所有可执行程序包涵的段和区的HEADER. |
|