c - Visual Studio : Different Size in Memory for same executable in XP and Windows7

标签 c memory console size executable

我有一个使用 Visual Studio Professional 2010 用 C 语言开发的 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 [程序名称]"

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

最佳答案

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

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

关于c - Visual Studio : Different Size in Memory for same executable in XP and Windows7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14575676/

相关文章:

C - 初始化时未修改位字段

C:将 char* 附加到 char**

php - 实时识别爬虫 - PHP - 跟踪内存中的访问文件

Haskell HDBC-ODBC 内存泄漏?

java - 控制台输入和输出的 JUnit 测试

c# - 通过控制台应用程序进行 UrlEncode?

c++ - 为什么 C++ 链接器不提示缺少这些函数的定义?

c - 在 Visual Studio 2015 中强制执行 ANSI C 标准

iOS - 使用 NSZombie 诊断 EXC_BAD_ACCESS

javascript - 覆盖后访问window.console