この問題はかなりややこしいです。どの変数が正しく返されないかを把握しようとしています。この問題は、VC6 プロジェクトを VS 2012 に移植しているときに発見されました。ここで起こることは、レコード セットが DB から取得され、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);
}
}
}
このタイプのバグを知る前に、次のようにして、スタックの代わりにヒープ内に配置しようRes
としました。DynaSet
static Result * ResPtr = NULL;
if(ResPtr != NULL)
{
delete ResPtr;
}
ResPtr = new Result();
これは問題を解決しませんでした。次の変数の周りのスタックが壊れています: Res
、DynaSet
さらに絞り込んで、すぐに質問を更新します。