我碰到this错误来了,我看到its而popular周围的变量C++堆栈被损坏
这个问题是相当混乱。我试图找出哪个变量没有被正确返回。将一个VC6项目移植到VS 2012时发现了此问题。这里发生的是从数据库中取出记录集并将其转入XML。
CGenAction GenAct(lUserId, O_ALARM, A_GET_TREE, ppALResult)
{
try
{
if (GenAct.BeginAction())
{
checkuserPremission(info);
Result Res;
Dynaset DynaSet;
if (type.GetRecordSet(UserId, DynaSet, Res)) {
turnToXml(DynaSet,Res.m_bstrXMLString);
}
returnToUI(Res);
}
}
}
之前我就知道这种类型的bug我试图做这样的事情将Res
和DynaSet
堆而不是堆栈内:
static Result * ResPtr = NULL;
if(ResPtr != NULL)
{
delete ResPtr;
}
ResPtr = new Result();
这并没有帮出来的问题。围绕以下变量的堆栈已损坏:Res
,DynaSet
我会尽量缩小范围,并且会尽快更新问题。
我没有看到任何可能导致此代码中堆栈损坏的内容,您是否可以缩小范围并发布该代码? – 2013-04-24 08:49:43
堆栈_which_变量?你的代码中有很多,所以很难说没有看到这些类的代码。此外,这些“开始/结束宏”评论是什么?这是一些宏的一部分吗? '试图找出哪个变量没有被正确返回是相当混淆的 - 错误确切地说明哪个变量被损坏了,你能显示完整的错误信息吗? – 2013-04-24 09:35:58