2012-03-06 104 views
4

我有一個關於POSIX線程堆棧大小夫婦的問題和他們的安全問題:POSIX線程堆棧內存 - 我們可以有不同的堆棧大小和安全問題嗎?

A),我們可以有不同的堆棧大小(使用每個線程集:pthread_attr_getstacksize)?

B)當線程死亡(分離/退出)時,操作系統是否會收回其內存頁?

C)如果一個線程碰巧在虛擬內存映射中彼此相鄰,它是否可以繼續寫入另一個線程堆棧段?

回答

3

A)是的,當然,這就是pthread_attr_setstacksize的目的。 B)是的,調用pthread_detachpthread_join會導致線程資源在終止時被回收。

C)理論上是的,但是由於在大多數系統中堆棧向後(從高地址到低地址)增長,你必須做某種緩衝區溢出才能擺脫當前的堆棧空間。