楠木軒

説説Windows嵌套窗口數量限制

由 完顏翠琴 發佈於 科技

嵌套窗口不能太多

在古老的年代,Windows系統並不會限制應用程序的嵌套窗口的數量。如果你真的想要創建200個嵌套窗口,那也是可以的,畢竟這是你自己的決定,我們無權多加干涉。許多應用程序涉及窗口的操作都是嵌套式的,但是有個地方需要注意的是,你需要確保程序的棧足夠大能容納得下這樣多的嵌套窗口,否則會造成棧溢出(stack overflow)。

引入一種限制措施

但是到了Windows NT的時候,窗口管理器從應用程序的Stack中移除(首先是被移動到了單獨的進程,後來被移到了內核空間中)。這個時候,操作系統就需要注意到那些創建了很多嵌套窗口的應用程序了,因為一旦應用程序創建了太多嵌套窗口,就有可能導致棧溢出。

在Windows NT時期,嵌套窗口被限制為100個。到了Windows XP時期,這個限制被進一步降到了50個,因為我們發現在調用某些內部函數時,如果嵌套窗口超過75個,則會產生棧溢出,所以限制嵌套窗口為50個,可以釋放更多的Stack空間以避免可能出現的棧溢出。

聲明一下

我並不是這塊功能的實際開發者,我只是從代碼提交日誌裏看到這個的,如果信息不準確,也是很有可能的。

最後

Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,裏面有很多關於Windows的小知識,對於廣大Windows平台開發者來説,確實十分有幫助。本文來自:《What is the window nesting limit?》

【來源:漫漫開發路】

聲明:轉載此文是出於傳遞更多信息之目的。若有來源標註錯誤或侵犯了您的合法權益,請作者持權屬證明與本網聯繫,我們將及時更正、刪除,謝謝。 郵箱地址:newmedia@xxcb.cn