如何查看已初始化数组与未初始化数组占用的内存

Tho*_*hor 4 arrays x86 assembly masm irvine32

我目前正在按照 Kip Irvine 的“x86 处理器的汇编语言”学习汇编编程。在第 3.4.12 节中,作者指出:

.DATA?指令声明未初始化的数据。当定义大量未初始化数据时,该.DATA?指令会减少编译程序的大小。例如,以下代码被高效地声明:

.data
smallArray DWORD 10 DUP(0) ; 40 bytes
.data?
bigArray DWORD 5000 DUP(?) ; 20,000 bytes, not initialized
Run Code Online (Sandbox Code Playgroud)

另一方面,以下代码生成的编译程序大 20,000 字节:

.data
smallArray DWORD 10 DUP(0) ; 40 bytes
bigArray DWORD 5000 DUP(?) ; 20,000 bytes
Run Code Online (Sandbox Code Playgroud)

我想在程序编译后查看每个版本代码的内存占用情况,这样我就可以亲自看到效果.data?,但我不确定如何做到。

小智 5

\n

我想查看程序编译后各个版本代码的内存占用\xe2\x80\xa6

\n
\n\n

区别在于编译后的可执行文件的大小,而不是执行时内存中映像的大小。

\n\n

简而言之:大多数现代操作系统都有一种方法可以让可执行文件将内存区域声明为“零填充”。可执行文件只需要说明该区域有多大,因此它比包含该区域的一堆文字零要小得多。

\n