2014-05-12 33 views
1

答案可能根據操作系統而有所不同,但我很好奇線程通常會預分配多少堆棧空間。例如,如果我使用:通常爲線程保留多少堆棧空間? (POSIX/OSX)

push rax 

,將放在堆棧上的值,並增加rsp。但是如果我從不使用push op呢?我想象一些空間仍然被分配,但多少?此外,這是一個固定的數額,或者它是否動態增長的東西push編輯?

回答

4

POSIX沒有定義任何關於堆棧大小的標準,它完全取決於實現。既然你標記這個OSX,默認分配有:

  • 主線程(8MB)
  • 輔助線程(512kB的)

當然,這些可配置,以滿足您的需求。的分配是動態的:

允許的最小堆棧大小爲輔助線程是16KB和 堆棧大小必須是4 KB的倍數。這個內存空間是 在創建線程的時候你的進程空間預留,但與記憶相關的 實際頁面不創建它們 需要至。

這裏包含太多的細節。我建議你閱讀:

Thread Management (Mac Developer Library)

+0

真棒,正是我一直在尋找。謝謝 – sircodesalot

相關問題