为什么 size 命令没有列出任何可执行文件或目标文件的堆栈或堆段?

kam*_*dey 5 c operating-system memory-management heap-memory stack-memory

size在 Unix 系统中对可执行文件或目标文件使用该命令时,我们以文本段和数据段大小的形式获得输出。为什么不显示堆或堆栈段的输出?下面是 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
Run Code Online (Sandbox Code Playgroud)

Pac*_*ac0 5

堆和堆栈适用于进程,它们(通常)是操作系统加载到内存中的可执行文件,而不是直接存储在文件系统上的文件。

此外,堆栈和堆大小在进程的生命周期内可能会发生变化,因此通常无法预测某个可执行文件作为进程加载时将占用多少堆栈或堆。

这就是为什么size除了文件本身的代码/数据的大小之外,类似的命令不旨在显示此类信息。