有关堆栈大小的警告消息

Warning message regarding stack size

本文关键字:警告 消息 堆栈      更新时间:2023-10-16

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

TCHAR someString[40000]; 

代码分析抛出警告信息:

警告C6262:函数使用了"40000"字节的堆栈:超过/analyze:stacksize"6384"。考虑将一些数据移动到堆

我想知道我是否应该认真对待这个警告。如果我在堆栈>16384上分配一些内存,我会面临一些真正的麻烦吗?还是这只是一条一般的警告信息,提醒我必须注意我的堆栈大小?据我所知,默认堆栈大小是1MB(如果您使用Visual Studio)。

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

我发现必须认真对待这样的警告。我有申报

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

错误地留在了一个大函数的深处。函数总是在进入函数后立即崩溃,即使本地分支中的声明很远,而且我从未使用调试器到达那里。在MSVisualStudio中很难找到它,即使代码分析给了我警告。