gpt4 book ai didi

c++ - 如何编译以减少内存/STACK 似乎没有任何改变?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:05:29 27 4
gpt4 key购买 nike

我创建了很多不需要任何内存的简单程序,但它们在任务管理器的私有(private)内存栏中总是显示大约 1MB-1.6MB 内存。

我读到与 link.exe 链接的默认堆栈大小为 1MB,我试过像这样使用/STACK :

/STACK:65536 (64kb)
/STACK:16777216 (16mb)

当我运行程序时,内 stub 本没有改变..

即使是这样一个简单的程序,使用 1.6MB 编译为 64 位,带有 link.exe 而没有库 (simple.c):

#include <stdio.h>

int main() {
puts("hello world\n");
getchar();
return 0;
}

谁能告诉我如何减少简单程序的内存?我知道 1mb 并不多,但我很好奇,因为有一些 Windows 进程在 taskman 中显示内存非常低,例如smss.exe 正在运行 0.4MB 私有(private)内存和 2 个线程。

谢谢!

最佳答案

如果您不包含 stdlib 并确保不链接您不使用的库,您可以减少占用空间。所有链接的 dll 都有自己的私有(private)数据段,我相信它包含在您的私有(private)数据集中。


在使用 Yes (/NODEFAULTLIB) 删除所有 STD 库后,将我的优化设置为 O1 并设置我的入口点 winmain 以避免使用此代码的 @_crtstatuperror

#include <windows.h>

int winmain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{

HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
char out[] = "bob";
DWORD Outchar = 0 ;
WriteConsole(h, out, 4, &Outchar, NULL);
return 0;
}

我把内存使用量降到了 292K 而没有变得非常奇特我不认为你可以把它降得更低

关于c++ - 如何编译以减少内存/STACK 似乎没有任何改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6246632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com