有关堆栈大小的警告消息

Mic*_*adu 8 c++ stack visual-studio-2010 visual-c++

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

TCHAR someString[40000]; 
Run Code Online (Sandbox Code Playgroud)

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

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

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

rri*_*wer 6

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

  • @rrirower:不太好.代码分析不认为堆栈是16k,它只是认为当单个函数使用超过16k的堆栈时它是可疑的.那是完全不同的.OTOH我真的希望警告能为我列出堆栈中最大的变量:/ (3认同)