簡體   English   中英

動態鏈接庫中靜態變量的行為(C / C ++)

[英]Behaviour of static variables in dynamically linked libraries (C/C++)

如所討論的在這里 ,一個靜態變量被存儲在.BSS或.DATA段。

如果靜態變量位於動態鏈接庫中的函數內,那么這個內存存儲在何處? 此變量的存儲是否在鏈接時在鏈接過程的.BSS或.DATA段中分配?

靜態變量將最終出現在DLL文件的.BSS或.DATA部分中。 鏈接到DLL的可執行文件可能甚至不知道它存在。 當EXE加載DLL時,系統為它設置DLL的數據部分,然后調用DllMain()。 這就是DLL靜態存在並初始化的時候。

是。 不同類型的靜態變量之間的差異是:

  • 范圍

  • 動態初始化的初始化時間。

實現(並注意BSS和DATA段是實現細節)通常是相同的。 為了確保動態啟動的靜態函數變量的正確初始化,一種方法是添加一個額外的布爾值,表示需要動態初始化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM