乙個全域性變數引起的DLL崩潰

2022-08-02 03:09:10 字數 449 閱讀 6464

現象是exe程式在載入dll的時候崩潰了,莫名其妙的崩潰了。換其它dll沒問題,我又寫了個demo程式使用這個dll也是乙個現象,用od載入exe,用oddllloader載入dll,結果也是一樣的崩。。搞的我也差點崩潰了。。

載入上微軟符號表後發現:

法個克,這個問題找了很長時間。我一直認為是專案配置錯誤導致的問題,跟**無關。

最後發現是由於dll中乙個全域性變數的建構函式中,給其成員變數分配的記憶體過大了,導致程式崩潰了。。分配的記憶體也不過是4096*1000這麼個大小,導致棧溢位了。

在cu找到了乙個同樣問題的帖子。。mark下。

記乙個全域性變數 冒充 區域性變數引起的bug

看 相當簡單直觀,覺得怎麼都不會出錯,可執行結果明明就是錯了 對著vim摸著腦袋就是想不出 有問題,可去掉新加的 就又可以了。沒辦法,只好祭出殺手鐗 一行一行注釋掉來觀察。反映問題的 段相當簡單 if condition then local v create object mpr if condi...

使用乙個全域性變數

然而,有區域性變數同名的全域性變數通常是製造麻煩,並應盡可能避免。使用匈牙利表示法,它是常見的全域性變數 g 字首。這是區分全域性變數與區域性變數的一種簡單的方式,避免了由於被隱藏變數命名衝突。新的程式設計師經常使用全域性變數很多,因為他們是容易的工作,特別是當涉及到許多功能。然而,這是乙個非常糟糕...

dll使用全域性變數的疑問

這裡先將dll原 奉上 lib.h標頭檔案 ifndef lib h define lib h ifdef cplusplus extern c endif endif lib.cpp include lib.h int dllglobalvar 10 int getglobalvar void 測...