c++ - 某个程序的堆栈内存有多大,是否有任何编译器标志可以设置它?

标签 c++ c memory size stack

正如标题所述:关于堆栈大小是否有任何一般的“经验法则”。我猜大小会因操作系统、架构、缓存大小、可用 RAM 大小等而有所不同。

但是一般来说可以说什么,或者有什么方法可以找出,这个程序允许使用多少堆栈?。作为一个额外的问题,是否有任何方法(使用编译器标志等(这里主要考虑 C/C++,但也更通用))堆栈的大小可以由用户设置为固定大小?

顺便说一句,我完全出于好奇而问,我没有堆栈溢出。 :)

最佳答案

在 Windows 中,线程的默认堆栈大小为一百万字节,与操作系统等无关。

在托管代码(C#、VB 等)中,您可以使用此 ctor 强制新线程具有不同的堆栈大小:

http://msdn.microsoft.com/en-us/library/5cykbwz4.aspx

要更改 Windows 程序的默认线程的堆栈大小,无论是否托管,都可以使用 editbin 实用程序:

http://msdn.microsoft.com/en-us/library/xd3shwhf.aspx

关于c++ - 某个程序的堆栈内存有多大,是否有任何编译器标志可以设置它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15329281/

相关文章:

windows - 关于内存页保护的问题

c++ - 将 vector<class> myvector 传递给构造函数并访问它

c++ - 使用 g++ 链接编译指示

c++ - 在 C++ 中将 3 变量方程拆分为 double 和字符

c++ - 我们可以将数据永久保存为数据结构吗?

c++ - std::ostream::write 有什么限制吗?

连接不断失败,C 语言中出现错误 10049

c - X-DWM -- 帮我修复C源代码中的一个bug

c - printf 命令导致段错误?

Java Collection#清除回收内存