有关堆栈大小的警告消息

时间:2014-04-24 12:49:33

标签: c++ visual-studio-2010 visual-c++ stack

我使用Visual Studio 2010激活了Code Analysis。在我的代码中,有一行在函数中分配一些内存:

TCHAR someString[40000]; 

代码分析会抛出一条警告消息:

  

警告C6262:函数使用'40000'字节的堆栈:超出/分析:stacksize'16384'。考虑将一些数据移动到堆

我想知道我是否应该严肃对待警告。如果我在堆栈上分配一些内存,我是否必须面对一些真正的麻烦> 16384?或者它只是一个一般的警告信息,它提醒我,我必须照顾我的堆栈大小?据我所知,默认堆栈大小为1MB(如果使用Visual Studio)。

2 个答案:

答案 0 :(得分:6)

不可否认,该消息可能令人困惑,因为VS(项目属性)确实报告默认值为1M。但是,如果您查看warning的文本,您会注意到代码分析的限制实际上是16k。按照该链接底部的步骤更正警告。

答案 1 :(得分:1)

我发现必须认真对待这些警告。 我有一个宣言

{ // some local branch deep inside a function 
char T[2000000];  
  ...
}

在一个大功能深处的某个地方错误地离开了。在进入函数后,函数总是立即崩溃,即使本地分支中的声明很远,我从来没有使用调试器。 在MS Visual Studio中很难找到,即使代码分析给了我一个警告。