求解:SQLGetData或者SQLBindData:Run-Time Check Failure #2 - Stack around the variable
点点半桶水 2011-09-17 10:26:38 首先,给出出现错误的源码,如下:
RETCODE rc;
SQL_DATE_STRUCT FCreateTime;
SQLINTEGER cbFCreateTime=0;
//rc = SQLGetData(hStmt, 8, SQL_C_DEFAULT, &FCreateTime, sizeof(FCreateTime), &cbFCreateTime);
rc = SQLFetch(hStmt);
if(SQL_NO_DATA == rc || SQL_ERROR == rc)
return;
rc = SQLGetData(hStmt, 8, SQL_C_DEFAULT, &FCreateTime, sizeof(FCreateTime), &cbFCreateTime);
当函数退出后,出现一下错误:
Run-Time Check Failure #2 - Stack around the variable 'FCreateTime' was corrupted.
其实,C语言的程序员,应该基本都知道是堆栈越界赋值引起的。可是,上面的代码,或许本人学习不够精,无法从何下手。虽然网上有一种解决方案:
上面代码如果在VS6.0是不会出错的,以上版本就会出错,一个解决方案是:
项目(Project)——》项目属性(Propertys Alt+F7)——》C/C++——》代码生成(Code Generation)——》基本运行时检查(Basic Runtime Checks)设置为默认(Default),
不错,这样可以解决。可是,毕竟是内存堆栈方面出现错误了,我还是想知道上面的代码,在不改基本运行时检查项情况下如何解决?谢谢