我使用Visual Studio 2010
激活了Code Analysis
。在我的代码中,有一行在函数中分配一些内存:
TCHAR someString[40000];
代码分析会抛出一条警告消息:
警告C6262:函数使用'40000'字节的堆栈:超出/分析:stacksize'16384'。考虑将一些数据移动到堆
我想知道我是否应该严肃对待警告。如果我在堆栈上分配一些内存,我是否必须面对一些真正的麻烦> 16384?或者它只是一个一般的警告信息,它提醒我,我必须照顾我的堆栈大小?据我所知,默认堆栈大小为1MB(如果使用Visual Studio)。
答案 0 :(得分:6)
不可否认,该消息可能令人困惑,因为VS(项目属性)确实报告默认值为1M。但是,如果您查看warning的文本,您会注意到代码分析的限制实际上是16k。按照该链接底部的步骤更正警告。
答案 1 :(得分:1)
我发现必须认真对待这些警告。 我有一个宣言
{ // some local branch deep inside a function char T[2000000]; ... }
在一个大功能深处的某个地方错误地离开了。在进入函数后,函数总是立即崩溃,即使本地分支中的声明很远,我从来没有使用调试器。 在MS Visual Studio中很难找到,即使代码分析给了我一个警告。