所以,我用一些全局靜態變量(記錄器)加載Dll。並沒有freelibrary。在關閉應用程序時,我調用了dll的方法,但全局靜態變量已經被銷燬。爲什麼???C++動態DLL生命週期中的靜態變量。或爲什麼他們死了?
2
A
回答
1
當DLL被卸載時,DLL中的靜態變量將被銷燬。當進程退出時,如果沒有明確的FreeLibrary
調用使其更早發生,主EXE的靜態變量被銷燬之前,會發生這種情況。
+0
如何捕捉這個? – 2011-03-02 08:07:01
+0
'static bool Loggable; class Flag { public: \t bool&live_detector_; \t flag(bool&live_detector):live_detector_(live_detector){ \t \t live_detector_ = true; \t} \t〜Flag(){ \t \t live_detector_ = false; \t} }; 標誌f(Loggable);'??? – 2011-03-02 08:09:19
相關問題
- 1. 靜態變量的生命週期
- 2. BroadcastReceiver生命週期 - 靜態變量
- 3. ASP.NET:應用程序生命週期,靜態變量
- 4. Android靜態對象生命週期
- 5. C++靜態變量動態
- 6. 有什麼區別bettwen靜態和動態變量在C#中?
- 7. 靜態生命期
- 8. dll中靜態成員變量的生存期
- 9. 靜態變量爲了
- 10. .NET中靜態變量的生存期
- 11. 爲什麼Asynctask或Runnable的生命週期與Activity的生命週期不同?
- 12. 非靜態類實例中的c#靜態變量的行爲是什麼?
- 13. 動態鏈接庫中靜態變量的行爲(C/C++)
- 14. C++靜態庫太大了,爲什麼?
- 15. 靜態類變量的生存期
- 16. 靜態(類)變量的生存期
- 17. ASP.NET靜態變量的生存期
- 18. 當你在C中引用靜態變量時究竟發生了什麼?
- 19. 從動態DLL訪問靜態鏈接庫中的靜態變量/函數
- 20. C++中的靜態變量
- 21. WP中的靜態對象的生命週期
- 22. 變量「с」變成靜態的嗎?爲什麼「c」被保存?
- 23. 在Swift類或結構中聲明爲靜態的變量會發生什麼?
- 24. 爲什麼我們使用靜態類變量?
- 25. C++靜態變量
- 26. C++ - 靜態變量
- 27. C++靜態變量
- 28. 爲什麼不是這個靜態c#變量改變?
- 29. 爲什麼要在C++中初始化靜態類變量?
- 30. java/oops中的靜態變量和動態變量有什麼區別?
你到底什麼時候調用這些方法? – sharptooth 2011-03-02 07:28:19
你能舉個例子說明你的意思嗎?這些靜態變量是什麼,你如何初始化它們,你是否從應用程序中爲它們分配任何東西,等等。 – 2011-03-02 07:32:02
避免DLL中的靜態對象,除非它們是DllMain-safe。例如,包含FILE *或std :: fstream的對象是* NOT * DllMain-safe。請參閱最近的線程http://stackoverflow.com/questions/5114683/loading-dll-not-initializing-static-c-classes/5115008#5115008和這篇文章http://go.microsoft.com/FWLink/?LinkId = 84138 – atzz 2011-03-02 09:20:43