是否返回地址和數據混合/存儲在相同的堆棧,或在2個不同的堆棧,其是這樣的?Windows程序使用多少個堆棧?
1
A
回答
2
它們混合。但是,這取決於實際的編程語言/編譯器。我可以將一個編譯器分配給堆上局部變量的空間並保留指向堆棧上的存儲的指針。
沒有每個線程一個堆棧中的每個過程。因此,例如,一個有20個線程的進程有20個獨立的堆棧。
0
這取決於編譯器,但x86架構是面向一個堆疊,由於方法push和pop指令與單一堆棧指針的工作。編譯器將不得不做更多的工作來維護多個堆棧。
2
正如其他人已經指出的,它主要是一個單一的,混合堆棧。我只是添加一個小細節:合理地,最近的處理器也有一個小的緩存返回地址存儲在處理器本身,這隻存儲返回地址,而不是其他數據。這主要是雖然更快的執行速度的外部不可見...
0
更多注:在Win32中的每個線程都有自己的堆棧。所以,當你告訴「Windows程序」 - 它取決於它有多少個線程。 (當然,線程在運行期間被創建/退出)。
相關問題
- 1. 這個例程使用多少堆棧空間?
- 2. 使用StackWalk64減少堆棧
- 3. 如何確定一個嵌入式程序使用多少堆棧空間
- 4. 堆棧上有多少個對象?
- 5. 多個程序員如何使用crashrpt堆棧跟蹤?
- 6. 使用C/C++/Java程序理解堆棧和堆棧
- 7. 在一個VPS上託管多個MEAN堆棧應用程序
- 8. 使用堆棧的Python Palindrom程序
- 9. 計算器程序使用堆棧
- 10. 看到應用程序線程使用的堆棧和堆量
- 11. 每個進程有多個堆棧?
- 12. 使用MEAN堆棧的多租戶應用程序
- 13. 堆棧指針的值是多少?
- 14. 堆棧上分配多少空間
- 15. MIPS堆棧可以支持多少?
- 16. 內核堆棧與用戶模式應用程序堆棧
- 17. 多少堆至少有windows下
- 18. 繪製堆棧和線程程序堆
- 19. 使用setrlimit()在具有拆分堆棧的多線程應用程序中增加堆棧空間
- 20. 在GWT中使用模擬堆棧有多少開銷?
- 21. 遞歸使用多少堆棧(從列表中刪除節點)?
- 22. 彙編程序中的兩個堆棧?
- 23. LIFO棧(Windows應用程序)
- 24. Java程序輸出(堆棧)
- 25. 堆棧多個libnotify彈出
- 26. 添加多個堆棧板.........
- 27. 堆棧中的多個MapActivitys
- 28. 堆棧在java中使用堆棧
- 29. 報告對象正在使用堆棧/堆上有多少內存? (GDB)
- 30. C程序的堆棧和堆內存