我剛開始學習操作系統。我對堆棧感到困惑。正如我發現堆棧被連接到每個線程。這意味着堆棧的生命是在創建線程時並在線程完成時被回收。 也從谷歌搜索,參數和一些局部變量存儲在線程中。但是這些是在編譯時分配的,這似乎與前者相沖突,即堆棧附加到線程並在線程完成後回收。 任何人都可以給我一些細節的解釋?程序中的堆棧實現
程序中的堆棧實現
回答
參數和一些局部變量存儲在線程中。但是這些是在編譯時分配的
這是不正確的。
當線程啓動時,堆棧與該線程關聯。當線程終止時,該堆棧將被回收。
有關爲什麼在編譯時無法分配的示例,想象一個程序,該程序提示用戶啓動一些線程,然後啓動該線程數。編譯器無法爲該線程上運行的方法或與該線程關聯的本地存儲的參數分配存儲空間。
您好埃裏克,根據你的解釋,你的意思是參數和局部變量是在編譯時聲明(只是確定它的類型和大小),而它的初始化(如內存分配)發生在執行時。這就是爲什麼參數和變量存儲在附加到線程的堆棧中的原因。 – user3500089
也可以再問一個問題嗎?如果全局變量和靜態變量在編譯時初始化並存儲在堆中。但我認爲堆動態分配。這似乎是一個衝突。 – user3500089
編譯器可以通過多種方式實現全局/靜態變量。但是,沒有真正的理由使用堆來實現它們。它們可用於整個程序的整個過程,並且它們的大小是已知的。可以在編譯時給它們一個地址,並且不需要任何動態內存管理。 –
- 1. 堆棧實現
- 2. C中的堆棧實現
- 3. C++堆棧實現
- 4. 在MySQL中實現堆棧
- 5. 在java中實現堆棧
- 6. 在C++中實現堆棧
- 7. 在C++中實現堆棧
- 8. 在c中實現堆棧
- 9. Java中的堆棧溢出與Collections-Java中的堆棧實現
- 10. 實現無堆棧的Python
- 11. 堆棧的數組實現
- 12. CL程序中的堆棧實現(OS400/iSeries)
- 13. 堆棧的頂部應該在堆棧的鏈表中實現?
- 14. 使用堆棧快速排序實現
- 15. 實現子程序 - 活動記錄實例堆棧描述
- 16. 在Rails應用程序中實現鏈接列表堆棧
- 17. 在堆棧實現中調用引用出錯(C程序)
- 18. 簡單堆棧實現
- 19. Python TCP堆棧實現
- 20. 使用BST實現堆棧
- 21. 通用堆棧實現
- 22. 用Python實現堆棧
- 23. java.lang.ArrayIndexOutOfBoundsException:0(堆棧實現)
- 24. 使用堆棧實現C++
- 25. C堆棧數組實現
- 26. GLES中的glPushAttrib/glPopAttrib堆棧實現
- 27. 在Java中的堆棧實現
- 28. C中堆棧的數組實現
- 29. 實現C++中的INT堆棧
- 30. c中的實現通用堆棧
你用混淆的方式使用行話。你能向我們展示一個你問什麼的具體例子嗎? –