13

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

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

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

4

2 回答 2

6

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

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

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

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

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

于 2013-03-11T00:14:35.493 回答
5

是的,您可以设置堆栈大小,它通常是一个链接器标志,它取决于您的工具链(通常由编译器的名称引用)。

您还可以在 StackOverflow 上找到几个现有的问题。

于 2013-03-11T00:07:40.817 回答