云凤大哥,久仰大名,我碰到一个非常怪的问题,能给我点思路吗,我的邮箱是psistorm@126.com请问下面这段代码出现这种运行情况的可能性
try{ if (g_wnd == hWnd) { TRACE("I am here!!\n"); } lResult = DoCallWindowProc(wndProc, hWnd, message, wParam, lParam);}catch(...){ if (g_wnd == hWnd) { TRACE("I meet a crash\n"); }}运行中发现, 有时候会只输出"I meet a crash",但没有"I am here!!"代码中的g_wnd是全局变量,是我临时添加的,在调试中自己设置为感兴趣的值,别的地方是绝对不会修改它的,hWnd是这段代码所处的函数中的一个局部变量,DoCallWindowProc接受的参数都是by value的,从语法上来说,是不可能导致hWnd的值发生改变的;请问,发生上述运行现象的情况是有什么可能的解释呢?
有可能是堆栈越界,比如在堆栈上定义了一个数组,但是越界写了。 - 回复 | (2163) | 云风 | 2009-05-07 05:10:03