1
答案可能根據操作系統而有所不同,但我很好奇線程通常會預分配多少堆棧空間。例如,如果我使用:通常爲線程保留多少堆棧空間? (POSIX/OSX)
push rax
,將放在堆棧上的值,並增加rsp
。但是如果我從不使用push
op呢?我想象一些空間仍然被分配,但多少?此外,這是一個固定的數額,或者它是否動態增長的東西push
編輯?
答案可能根據操作系統而有所不同,但我很好奇線程通常會預分配多少堆棧空間。例如,如果我使用:通常爲線程保留多少堆棧空間? (POSIX/OSX)
push rax
,將放在堆棧上的值,並增加rsp
。但是如果我從不使用push
op呢?我想象一些空間仍然被分配,但多少?此外,這是一個固定的數額,或者它是否動態增長的東西push
編輯?
POSIX沒有定義任何關於堆棧大小的標準,它完全取決於實現。既然你標記這個OSX
,默認分配有:
當然,這些可配置,以滿足您的需求。的分配是動態的:
允許的最小堆棧大小爲輔助線程是16KB和 堆棧大小必須是4 KB的倍數。這個內存空間是 在創建線程的時候你的進程空間預留,但與記憶相關的 實際頁面不創建它們 需要至。
這裏包含太多的細節。我建議你閱讀:
真棒,正是我一直在尋找。謝謝 – sircodesalot