堆栈的思考

http://www.cnblogs.com/kevinGaoblog/archive/2012/03/23/2413102.html

大致上,网上关于系统分配的堆栈空间的大小有以下的说法:
vs分配的栈空间为1M
堆空间,如果是4G的内存,应该有3G或少一点的堆空间可以分配。

在windows上用vs编译器的话一般堆栈是1M,不过可以用 #pragma comment(linker ,”/stack”)来设置大小,比如你可以用
··· #pragma comment(linker, “/stack 10000000:10000000)就样就是10M了,至于heap的话则最多是3G,因为内核一定要占用最小1G有的占用2G,其它的基本上可以给heap使用

http://blog.csdn.net/qijianli/article/details/8021380
这篇文章介绍的也比较好~!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
警告信息中提示的错误是函数c6262使用了堆栈的81536个字节,超过了预设的堆栈大小16384个字节。 堆栈是用于存储函数调用过程中局部变量、函数参数以及返回地址等信息的一种数据结构。栈空间是有限的,操作系统为每个线程分配一定大小的堆栈空间。 当一个函数在执行过程中使用的堆栈空间超过了操作系统预设的大小,就会发生“栈溢出”的错误。这种错误可能导致程序崩溃、数据丢失或者安全漏洞。 对于这个警告信息,我们可以采取以下几种解决方法: 1. 优化函数c6262的代码,减少对栈空间的占用。可以尝试使用动态分配的方式代替在栈上分配大量的局部变量空间。 2. 使用循环和递归等结构的时候,需要特别注意递归的深度,避免无限递归导致栈溢出。可以使用迭代代替递归,或者通过增大堆栈大小进行解决。 3. 增大编译器允许的堆栈大小。可以通过配置编译器的相关参数,将堆栈大小设置为一个更大的值,以满足函数使用的需求。 4. 可以尝试将部分变量转换为全局变量或静态变量,从而减少对栈空间的占用。 5. 分析函数c6262的逻辑和算法,思考是否有更加高效的实现方式,从而减少对栈空间的需求。 需要注意的是,修改堆栈大小可能会导致程序的可移植性和性能等方面的影响,因此需要综合考虑各种因素,并进行必要的测试和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值