Windwos 程序的 stack 和 heap 尺寸是多大啊?

36 天前
TESTFLIGHT2021  TESTFLIGHT2021
一般从来没关注过这个
网上看到 stack 大小是 1M 但是实际使用中 ,申明几十 M 的 数组也没问题啊?
请教大神们,咋回事
802 次点击
所在节点   程序员  程序员
2 条回复
cnbatch
cnbatch
36 天前
程序编译时可以自行指定栈大小,默认设置 1M ,可以自己改:
https://learn.microsoft.com/en-us/cpp/build/reference/stack-stack-allocations?view=msvc-170

该设置的相应截图:
https://stackoverflow.com/questions/14080982/visual-studio-c-c-array-size-unhandled-exception-stack-overflow

另外很好奇你的数组是怎样声明的?

我试了下:
char test[10240000] = {};
std:cout << sizeof(test) << "\n";

默认设置不改,运行的时候会爆栈
R4rvZ6agNVWr56V0
R4rvZ6agNVWr56V0
35 天前
Stack 最大限制:Windows 通常限制单个线程栈最大为 1GB 可以通过编译器参数调整初始大小
Heap 最大理论限制:32 位系统下约 2GB ( 3GB ),64 位系统下仅受限于物理内存和页面文件大小.实际使用时受系统资源限制

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1113359

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX