Visual Studio:XP和Windows7中相同可执行文件的内存大小不同

Posted

技术标签:

【中文标题】Visual Studio:XP和Windows7中相同可执行文件的内存大小不同【英文标题】:Visual Studio : Different Size in Memory for same executable in XP and Windows7 【发布时间】:2013-01-29 04:30:26 【问题描述】:

我有一个使用 C 语言的 Visual Studio Professional 2010 开发的 Windows 控制台应用程序。 出于测试目的,我在两个系统上运行它。在一个系统(Windows XP)中,任务管理器报告内存中的大小约为 2000 K,而在另一个系统中它只有 600 K。 可执行文件大小没有变化。(仅限 300K)。

XP系统使用Visual Studio 2010 express生成exe 和使用 Visual Studio 2010 Professional 的 Windows 7 系统。 在这两种情况下,可执行文件的大小完全相同。

为什么会这样?我怎样才能使尺寸相同?

系统加载的dll有问题吗? 程序使用的 dll 在某些情况下会有所不同。

我使用以下方法检查了两个系统加载的 dll:

tasklist /m /fi "imagename eq [programname]"

Windows XP系统输出:

                               ntdll.dll, kernel32.dll, KERNELBASE.dll,
                               MSVCR100D.dll, WS2_32.dll, msvcrt.dll,
                               RPCRT4.dll, NSI.dll, mswsock.dll,
                               user32.dll, GDI32.dll, LPK.dll, USP10.dll,
                               IMM32.DLL, MSCTF.dll, wshtcpip.dll

Windows 7系统输出:

                              ntdll.dll, kernel32.dll, MSVCR100D.dll,
                              WS2_32.dll, ADVAPI32.dll, RPCRT4.dll,
                              Secur32.dll, msvcrt.dll, WS2HELP.dll,
                              mswsock.dll, hnetcfg.dll, GDI32.dll,
                              USER32.dll, IMM32.DLL, wshtcpip.dll

感谢 Xen

【问题讨论】:

这两个操作系统在内部存在很大差异,以至于您能够在某些方面观察到差异,这让您感到惊讶吗? 您是否在两个系统中创建相同的输出类型? (即要么都“调试”,要么都“发布”) 我没想到内存大小之间会有这么大的差异。 我想这是正常的事情。我在taskmanager中检查了notepad.exe。在XP上它需要4000K,在Win 7中只有900K。在XP文件大小为68K,但在Win7中,大小是 175K 【参考方案1】:

VMMap 显示摘要信息和详细的进程内存映射。您可以将内存消耗的布局保存在一个文件中,然后针对不同的操作系统版本进行比较。

文件在内存中的分布取决于操作系统版本。 Windows 7 通过MinWin 减少 exe 占用的内存消耗和加载时间(您可以看到新的 dll kernelbase.dll)。

【讨论】:

谢谢 sergmat,提供信息 VMMAP 是一个很棒的工具。感谢您的建议。

以上是关于Visual Studio:XP和Windows7中相同可执行文件的内存大小不同的主要内容,如果未能解决你的问题,请参考以下文章

如何在 windows 7/visual studio 2008 下为 windows XP 编译

Visual Studio 2019 和 OpenCV 4 为 Windows 7 和 Windows XP 编译程序

在 Windows 7 而不是 Windows XP 上运行 Visual Studio 2010 的优势

Windows XP 中的 Visual Studio 2013 远程调试过程

无法在 Windows XP 上运行 Visual Studio 2012 程序

有没有人设法让 Visual Studio 2003 在 Windows 7 上运行?