如果我的應用程序加載的DLL中定義了全局變量,則此變量位於與我的應用程序中定義的其他全局變量相同的內存區域中(所以不直接在DLL中)?在主機軟件的dll和全局變量中定義的全局變量
2
A
回答
3
作爲EXE部分載入的全局數據和作爲DLL一部分加載的全局數據都位於同一進程的虛擬內存空間中,但位於與這些EXE和DLL文件中定義的段對應的不同區域中。由於它們位於相同的虛擬內存空間中,DLL中的代碼可以使用EXE全局指針指向EXE全局,反之亦然。
3
答案是肯定的。 MSDN報價: 「加載DLL的每個進程都將其映射到其虛擬地址空間中」。 轉到此link,你會發現你的疑問的答案。 祝你好運
0
你的標籤指示C++,但答案也可能取決於平臺/操作系統。在windows下,每個進程都會複製數據。下面是來自MSDN Run Time Behavior article片段:
每當一個新的進程試圖 使用DLL時,操作系統 創建DLL的 數據的單獨副本:這就是所謂的進程連接。
在單個進程中,全局數據很好,...全局。
相關問題
- 1. Typescript:定義文件和全局變量
- 2. AngularJs定義全局變量
- 3. 定義全局變量
- 4. 全局變量未定義
- 5. CakePHP 3:定義全局變量變量
- 6. 安全和全局變量
- 7. CodeIgniter中未定義的全局變量
- 8. 定義全局變量在C局部變量
- 9. 在GoogleScript中定義全局變量
- 10. 全局變量
- 11. 全局變量
- 12. 全局變量?
- 13. 全局變量
- 14. 全局變量
- 15. 全局變量
- 16. 全局變量
- 17. 全局變量
- 18. 的變量和全局()
- 19. mysql自定義全局定義變量
- 20. 變量全局變量?
- 21. lotusscript中的全局變量如何全局變量IBM Notes 9
- 22. 我的腳本中的全局變量和局部變量
- 23. setInterval的全局變量沒有定義
- 24. 全局變量「的getInfo」未定義
- 25. 未找到全局定義的變量
- 26. JavaScript的全局變量未定義
- 27. 定義全局變量在Perl與`strict`
- 28. Julia中沒有定義全局變量
- 29. 跨DLL的C++全局變量
- 30. Python的全局和局部變量
謝謝,我希望我會幸運! – Guillaume07 2011-04-09 20:26:52
這是一個誤導。它當然不會「在相同的內存區域」,它只是在相同的進程地址空間中。答案是不。 – 2011-04-09 20:38:53
@漢斯:感謝那 – Guillaume07 2011-04-09 20:44:14