CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

为什么在函数中声明大型变量会产生stack overflow(堆栈溢出)?

楼主THINK511()2005-02-28 12:46:52 在 VC/MFC / 基础类 提问

我今天做程序,在一个函数里声明了两个变量数组:  
  double   a[8][86400];  
  double   b[7][86400];  
  但程序运行的时候就报错:Error   0xC00000FD:stack   overflow  
  当我将变量改为:  
  double   a[8][864];  
  double   b[7][864];  
  后程序就没有了问题,请问为什么大型变量会导致stack   overflow呢?  
  (毕竟一个变量占据的内存才有:   8*8*86400   =   5529600   Bytes   =   5.27M   Bytes   。两个变量才10MB左右,远远小于VC++默认的50MB) 问题点数:100、回复次数:4Top

1 楼ColderRain(一切尽在不言中)回复于 2005-02-28 12:52:41 得分 100

函数默认栈好像是2M(还是1M?),你已经超出了,应该new.在进程堆里分配内存.Top

2 楼THINK511()回复于 2005-02-28 13:00:41 得分 0

我查了MSDN中关于/Zm的讲解,原来那里面默认50M指的是compiler's   memory   allocation   limit,即编译器的内存大小分配限制,不是我认为的函数堆栈大小。我搞清楚了,非常感谢!Top

3 楼hdqqq(小西瓜)回复于 2005-02-28 13:00:51 得分 0

线程运行的栈有大小限制的,你还是用   new   来分配好了.  
   
  Top

4 楼legendhui(秋天的叶子)回复于 2005-02-28 13:02:29 得分 0

8   cuoTop

相关问题

  • javascript 大容量操作数据时堆栈溢出 stack overflow
  • ?????“Stack overflow(堆栈溢出)”请各位出个点子?????
  • 函数调用问题!!函数调用时,堆栈怎么变化!!!
  • delphi5中使用的有关堆栈的函数有什么?
  • 谁讲讲函数调用的堆栈是怎么样的?
  • 谁讲讲函数调用的堆栈是怎么样的?
  • 谁讲讲函数调用的堆栈是怎么样的?
  • 如何解决函数调用的堆栈溢出?
  • 请问如何测试一个函数最大使用堆栈的情况
  • 为什么在进入函数时,老是栈溢出(stack overflow)呢,奇怪啊???在线等!

关键词

  • 函数
  • 内存
  • 变量
  • stack overflow
  • 默认
  • 程序
  • 大小
  • double

得分解答快速导航

  • 帖主:THINK511
  • ColderRain

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo