学习
实践
活动
专区
工具
TVP
写文章

说说Windows嵌套窗口数量限制

嵌套窗口不能太多

在古老的年代,Windows系统并不会限制应用程序的嵌套窗口的数量。如果你真的想要创建200个嵌套窗口,那也是可以的,毕竟这是你自己的决定,我们无权多加干涉。许多应用程序涉及窗口的操作都是嵌套式的,但是有个地方需要注意的是,你需要确保程序的栈足够大能容纳得下这样多的嵌套窗口,否则会造成栈溢出(stack overflow)。

引入一种限制措施

但是到了Windows NT的时候,窗口管理器从应用程序的栈中移除(首先是被移动到了单独的进程,后来被移到了内核空间中)。这个时候,操作系统就需要注意到那些创建了很多嵌套窗口的应用程序了,因为一旦应用程序创建了太多嵌套窗口,就有可能导致栈溢出。

在Windows NT时期,嵌套窗口被限制为100个。到了Windows XP时期,这个限制被进一步降到了50个,因为我们发现在调用某些内部函数时,如果嵌套窗口超过75个,则会产生栈溢出,所以限制嵌套窗口为50个,可以释放更多的栈空间以避免可能出现的栈溢出。

声明一下

我并不是这块功能的实际开发者,我只是从代码提交日志里看到这个的,如果信息不准确,也是很有可能的。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。

本文来自:《What is the window nesting limit?》

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200831A0OV4000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券