2013-08-23 30 views
0

程序堆和堆棧的可用數量是多少?我如何確定它?它是依賴於編譯器還是PC還是兩者?個人電腦上堆和堆棧的數量

+2

取決於幾乎所有的東西,包括操作系統和操作系統設置。如何確定它也取決於操作系統(如果可能的話)。所以,如果沒有更具體的細節,你的問題是不能真正答覆的。 – Mat

回答

1

它是「無限」:]。每個進程都會收到一個虛擬地址空間,這個空間僅受CPU和操作系統實現的限制如果CPU或操作系統是32位,則該過程有可能解決大約4GB的虛擬內存(即使您的PC中安裝的RAM較少)。在64位CPU和64位操作系統上,當前的實現將虛擬地址空間限制爲48位,所以一個進程認爲它可以使用高達256TB的內存。

操作系統將動態地嘗試保留儘可能多的堆棧空間和進程所需的空間。

1

這取決於操作系統,硬件和其他正在運行的程序。您可以向操作系統詢問物理內存和交換空間的大小,但不知道堆棧和堆棧實際上可用於您的程序。你的程序會得到自己的虛擬內存空間,但是如果你試圖分配它,如果沒有內存來支持它,分配將失敗。