堆栈和数据用于处理文本数据中的heap和bss
发布时间
阅读量:
阅读量
堆栈、数据、文本、heap、bss、text data、stack
text data bss stack heap 段
根据APUE,程序可以划分为以下的段:.text, data (initialized), bss, stack, heap。
data/bss/text:
text段在内存中被映射为只读形式,而.data和.bss则具有可写性。
bss是Block Started by Symbol的缩写,通常用于存储程序中未初始化的全局变量,在程序加载时由内核将其初始化为零。BSS段属于静态内存分配范畴,其初始值由用户定义的连接定位文件所决定,并应被安排在可读写的RAM区域中。通过malloc分配的内存属于这一部分,其大小并非依据data区的容量确定,而是由程序同时分配的最大内存值决定。若超出该范围,则会导致分配失败,需等待空间释放后再次尝试分配。
text段对应于程序代码段,在AT91库中表示程序代码部分的大小,该数值由编译器在编译连接过程中自动计算得出。当链接定位文件将该符号放置于代码段之后,该符号所代表的值即为代码段的实际大小,并会在编译连接阶段自动代入到源程序之中。
data包含静态初始化的数据内容,因此具有初始值的全局变量和static变量会被存储在data区。该区起始位置由连接定位文件确定,在编译连接时其大小会自动分配,并不依赖于程序
全部评论 (0)
还没有任何评论哟~
