在Unix系统中使用带有可执行文件或目标文件的size
命令时,我们以文本段和数据段的大小形式输出。为什么不显示堆或堆栈段的输出?以下是size命令的输出
$ size hello_world-1 hello_world-1.o
text data bss dec hex filename
916 256 4 1176 498 hello_world-1
48 0 0 48 30 hello_world-1.o
答案 0 :(得分:1)
堆和堆栈适用于进程,它们是(通常)由操作系统加载到内存中的可执行文件,而不是直接存储在文件系统上的文件。
此外,堆栈和堆大小在进程的生命周期内可能会有所不同,因此通常无法预测某个可执行文件在作为进程加载时将占用多少堆栈或堆。
这就是为什么像size
这样的命令除了文件本身的代码/数据大小之外,还不是为了显示这些信息。
答案 1 :(得分:1)
因为堆部分用于程序运行时的动态内存分配,并且内存将在运行时分配,因为它是动态权限。对于 stack ,存储在那里的变量只有本地范围或块范围,并且它们也存在,直到程序运行。
是的,堆栈,堆,数据和代码内存部分位于正在运行的进程或程序的上下文中。
答案 2 :(得分:0)
它们是操作系统进程,不适用于查找大小!