CC++:函数调用,栈的大小是如何被确定的

CC++:函数调用,栈的大小是如何被确定的,第1张

栈的大小程序员是可以定制的。例如:

Windows (在编译过程中的设置):

1). 选择 "Project->Setting".

2). 选择 "Link".

3). 选择 "Category"中的 "Output".

4.) 在 "Stack allocations"中的"Reserve:"中输栈的大小,例如: 32768

在 Visual Studio 开发环境中设置此链接器选项

打开此项目的“属性页”对话框。有关详细信息,请参见设置 Visual C++ 项目属性。

单击“链接器”文件夹。

单击“系统”属性页。

修改下列任一属性:

堆栈提交大小

堆栈保留大小

/STACK选项设置堆栈的大小(以字节为单位)。此选项仅在生成.exe文件时使用。reserve值指定虚拟内存中的总的堆栈分配。对于x86和x64计算机,默认堆栈大小为1MB。在Itanium芯片组上,默认大小为4MB。commit取决于 *** 作系统所作的解释。在WindowsNT和Windows2000中,它指定一次分配的物理内存量。提交的虚拟内存导致空间被保留在页面文件中。更高的commit值在应用程序需要堆栈空间时可节省时间,但会增加内存需求并有可能延长启动时间。对于x86和x64计算机,默认提交值为4KB。在Itanium芯片组上,默认值为16KB。以十进制或C语言表示法指定reserve值和commit值。

栈是线程的,不是进程的

是一个进程一个堆,一个线程一个栈吗

堆≈虚拟内存大小-1GB

栈通常为4MB

下面是一些说明文件:

Visual C++ 编译器选项

/F(设置堆栈大小)

请参见 发送反馈意见

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

/F[ ]number

参数

number

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

备注

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11008363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存