程序栈,函数栈,cmake对vc默认设置程序堆栈10m的浅见

想起这玩意,是今天在玩cmake的时候触发的,cmake在生成vs项目时,默认会使用/STACK:10000000,将程序堆栈设成10m。

 

突然想到程序栈,函数栈的问题。

 

由于操作系统,c语言学习良久,这两个东东到还真未必十分明了。

 

思索了一下,大致的关系的应该是一个程序一个栈,函数堆栈是在程序进入函数时,动态的在程序栈上分配的,所以,制定函数堆栈大小应该是没有意义的,比如在递归函数中,函数栈可能很大,这时如果按照一般情况下指定了较小的函数栈,那死都不知道怎么死的。当然,编译期间应该也是不知道函数栈大小的。

 

指定程序栈大小,要说有意义,也就是在内存比较少的情况下,节约点内存吧。可能是这样,虽然每个程序在运行时,操作系统会为其分配4g的内存空间,当然,大部分是不会真正分配的。但是程序堆栈,由于是常用之物,所以,一旦定义了程序堆栈大小,那么操作系统在载入程序时,应该会至少分配该程序设置的程序栈大小,也就是说,如果对一个helloworld程序设置了10m的程序栈,那么即使他根本不需要什么内存,操作系统还是会实际分配至少10m的内存的给他,从而造成浪费。如果情景属实,那可以通过任务管理器来验证。

这个有待验证。

 

总归,分配10m的程序栈,应该算是比较大的了,cmake不至于会往小的分。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值