【发布时间】:2015-02-11 17:07:12
【问题描述】:
我无法理解文本段中存储的内容。到目前为止,我发现它包含我的程序的可执行代码(以 0 和 1 表示)。但是程序的整个内存不都包含可执行代码(即写成0和1)吗?我的意思是,一个程序首先被编译,然后是汇编,最后是链接,因此,一旦我们运行它,它就是二进制的。那么,一旦程序运行,栈帧就会在栈中为当前正在执行的函数创建,并且在这些栈帧中所有的变量都是 0 和 1,但是文本段里面是什么?
【问题讨论】:
-
好吧,“0 和 1”部分已经不正确了。我的一些程序包含 2s、3s 等等——一直到 255。
-
clcto 没有回答我的问题
-
等等,那个区域是否包含所有函数的原型?
-
@Root149:建议的重复问题的答案确实回答了您的问题:Unix 系统上程序的“文本”段是代码——机器代码,构成的函数程序(尤其包括
main(),如果程序是用 C 或 C++ 编写的)。它还可以包含只读数据。 这就是您想知道的。是的,可执行文件中的所有代码和数据都可以视为二进制数据。二进制数据的某些部分可以解释为文本数据——例如,字符串以二进制形式存储但可以被视为文本。 -
"text" 是用于程序代码部分(有时称为段)的旧命名约定。 “数据”通常用于数据初始化数据。 “堆栈”用于堆栈。 “bss”代表由符号开始的块,用于未初始化的数据(可能是零)。另一个术语,主要用于大型机,是“bes”,代表以符号结尾的块,它是堆栈或类似数据的堆栈的替代方案。
标签: c memory memory-management text