正如标题指出:有没有关于栈的大小,任何一般的“经验法则”。 我猜大小会根据操作系统的不同,体系结构,高速缓存(S)的大小,多少可用RAM等。
但是可以在任何一般的说,或者是有什么办法找出来,怎么叠的多, 这个程序被允许使用? 作为奖励的问题是有没有办法(与编译器标志等(想大多数是C / C ++在这里,但也比较一般)),该堆栈的大小可以设置为用户的固定大小?
顺便说一句,我问严格出于好奇,我并没有一个堆栈溢出。 :)
正如标题指出:有没有关于栈的大小,任何一般的“经验法则”。 我猜大小会根据操作系统的不同,体系结构,高速缓存(S)的大小,多少可用RAM等。
但是可以在任何一般的说,或者是有什么办法找出来,怎么叠的多, 这个程序被允许使用? 作为奖励的问题是有没有办法(与编译器标志等(想大多数是C / C ++在这里,但也比较一般)),该堆栈的大小可以设置为用户的固定大小?
顺便说一句,我问严格出于好奇,我并没有一个堆栈溢出。 :)
是的,你可以设置堆栈大小,它通常是一个连接标志,它取决于你的工具链(通常这是由编译器的名字简称)。
/F
选项来改变大小, DUMPBIN /HEADERS
看到设置是什么 。 -Wl,--stack
你也可以在这里找到在计算器上一些存在的问题。
在Windows中的一个线程默认堆栈的大小是一个百万字节,无论操作系统等。
在托管代码(C#,VB等),你可以强制一个新的线程来与这个构造函数不同的堆栈大小:
http://msdn.microsoft.com/en-us/library/5cykbwz4.aspx
要更改Windows程序的默认线程的堆栈大小,无论是管理还是没有,你可以使用EDITBIN实用程序:
http://msdn.microsoft.com/en-us/library/xd3shwhf.aspx