巢狀視窗不能太多
在古老的年代,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?》
【來源:漫漫開發路】
宣告:轉載此文是出於傳遞更多資訊之目的。若有來源標註錯誤或侵犯了您的合法權益,請作者持權屬證明與本網聯絡,我們將及時更正、刪除,謝謝。 郵箱地址:[email protected]