所以,我用一些全局靜態變量(記錄器)加載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. 公共靜態變量和Android活動生命週期管理
- 4. Android中的靜態變量生命週期
- 5. 靜態變量生命週期和應用程序池recylcing
- 6. ASP.NET:應用程序生命週期,靜態變量
- 7. Java靜態類生命週期
- 8. Android靜態對象生命週期
- 9. C++靜態變量動態
- 10. DLL中的靜態屬性生命期或緩存方法
- 11. 有什麼區別bettwen靜態和動態變量在C#中?
- 12. 靜態生命期
- 13. dll中靜態成員變量的生存期
- 14. 靜態變量爲了
- 15. .NET中靜態變量的生存期
- 16. 爲什麼Asynctask或Runnable的生命週期與Activity的生命週期不同?
- 17. Typescript和jsx,爲什麼在對象的生命週期中靜態聲明的狀態爲null?
- 18. 非靜態類實例中的c#靜態變量的行爲是什麼?
- 19. C++靜態庫太大了,爲什麼?
- 20. 動態鏈接庫中靜態變量的行爲(C/C++)
- 21. Android:活動來自靜態類的生命週期偵聽器
- 22. 靜態變量和靜態變量的區別是什麼?
- 23. Sqlite動態觸發器生命週期
- 24. 我們可以動態地爲C中的靜態變量分配內存嗎?
- 25. 當你在C中引用靜態變量時究竟發生了什麼?
- 26. 靜態類變量的生存期
- 27. 靜態(類)變量的生存期
- 28. ASP.NET靜態變量的生存期
- 29. 從動態DLL訪問靜態鏈接庫中的靜態變量/函數
- 30. 爲什麼靜態變量不好?
你到底什麼時候調用這些方法? – 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