Roger Luo

超越梦想一起飞
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Visual Studio 开发实录

Posted on 2013-02-07 14:19  Roger Luo  阅读(194)  评论(0编辑  收藏  举报

Exception Handling

Stack around the variable was corrupted

内存越界将会导致这个异常出现,例如如下代码:

void Reset(void * pv)
{
if (pv)
{
double * pd = reinterpret_cast<double *>(pv);
*pd = 0.0;
}
}
void Fun1()
{
long l1 = 1;
Reset(&l1);
}
调用函数Fun1将会通过编译,而在执行过程中,由于函数返回指针以及被修改了,由与long是四个字节的,而double是8个字节的,所以当将0.0赋予指针后,将覆盖函数的回调指针,从而导致异常出现。

error MSB6006: "cmd.exe" exited with code 3

通常是由于SDK或者关键文件没有找到才会导致的

可以通过启动详细build信息来查看具体错误,即使没有找到也可以将这段详细编译信息提交到msdn找专业的人去看,如下截图是教你如何打开详细信息

注意,如果解决问题后,请将其改为normal,否则编译会变慢

Picture 2013-05-24 13_52_13

SDK dir for vc, framework

open the visual studio command line tool and then echo these macro

FRAMEWORKDR

VCINSTALLDIR

WINDOWSSDKDIR