您的位置:首页 > 其它

栈默认有多大

2015-10-23 20:21 211 查看
Visual C++ 编译器选项

/F(设置堆栈大小)

请参见 发送反馈意见

设置程序堆栈大小(以字节为单位)。

/F[ ]number

参数

number

堆栈大小(以字节为单位)。

备注

如果不使用此选项,堆栈大小默认为 1 MB。number 参数可以用十进制或 C 语言表示法表示。参数的范围可以在 1 到链接器接受的最大堆栈大小之间。链接器将指定值向上舍入为最接近的 4 个字节。/F 和 number 之间的空格可选的。

如果程序获得堆栈溢出消息,则可能需要增加堆栈大小。

也可通过下列内容设置堆栈大小:

使用 /STACK 链接器选项。有关更多信息,请参见 /STACK。

对 .exe 文件使用 EDITBIN。有关更多信息,请参见 EDITBIN 参考。

在 Visual Studio 开发环境中设置此编译器选项

打开此项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。

单击“C/C++”文件夹。

单击“命令行”属性页。

在“附加选项”框中键入编译器选项。

以编程方式设置此编译器选项

请参见 AdditionalOptions。

请参见

概念

编译器选项

设置编译器选项

发送反馈意见,就此主题向 Microsoft 发送反馈意见。

看来默认大小是1MB,不是我上面说的4MB
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理





youyou1912
youyou1912
本版等级:


#12 得分:5回复于: 2013-04-25 18:03:38

栈和线程相关, 默认1MB预留, 初次递交8KB, 自动增长, 具体使用要看线程调用栈了. 所以如果进程中有N个线程. 默认情况下, 有N*1MB的栈预留空间, 和小于这个数字的实际使用.

堆和Heap管理有关, 默认存在系统堆和CRT堆. 具体大小取决于程序本身对内存的分配和使用, 可以调用HeapSize看实际使用大小.

另外还有虚拟内存, 独立于对堆外, 直接通过VirtualAlloc预留或分配. 也属于进程动态分配的内存.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: