gpt4 book ai didi

delphi - 系统错误。代码 : 8. 没有足够的存储空间来处理此命令

转载 作者:行者123 更新时间:2023-12-03 14:32:48 24 4
gpt4 key购买 nike

我们有一些 Win32 应用程序(在 Delphi 2006 中编码),有时用户会收到一条错误消息,指出“系统错误。代码:8。没有足够的存储空间来处理此命令。” .

从堆栈跟踪看来它总是在 CreateWnd 调用期间

Main ($1edc):
004146cc +070 app.exe SysUtils RaiseLastOSError
00414655 +005 app.exe SysUtils RaiseLastOSError
004ce44c +130 app.exe Controls TWinControl.CreateWnd
00535a72 +022 app.exe cxControls TcxControl.CreateWnd
004ce82a +016 app.exe Controls TWinControl.CreateHandle
00553d21 +005 app.exe cxContainer TcxContainer.CreateHandle
00586ef1 +005 app.exe cxEdit TcxCustomEdit.CreateHandle
005c331d +005 app.exe cxDropDownEdit TcxCustomDropDownEdit.CreateHandle
004ceaf0 +074 app.exe Controls TWinControl.UpdateShowing
004ceb1e +0a2 app.exe Controls TWinControl.UpdateShowing
004cebdc +03c app.exe Controls TWinControl.UpdateControlState
004d118a +026 app.exe Controls TWinControl.CMVisibleChanged
004cb713 +2bb app.exe Controls TControl.WndProc
004cf569 +499 app.exe Controls TWinControl.WndProc
004b727d +4c1 app.exe Forms TCustomForm.WndProc
004cb3a0 +024 app.exe Controls TControl.Perform
004c9f6a +026 app.exe Controls TControl.SetVisible
004b6c46 +03a app.exe Forms TCustomForm.SetVisible
004baf1b +007 app.exe Forms TCustomForm.Show
004bb151 +14d app.exe Forms TCustomForm.ShowModal
007869c7 +0d3 app.exe UfrmPrice 770 +19 TfrmPrice.EditPrice
0078655d +009 app.exe UfrmPrice 628 +0 TfrmPrice.actNewBidExecute
00431ce7 +00f app.exe Classes TBasicAction.Execute
004c2cb5 +031 app.exe ActnList TContainedAction.Execute
004c397c +050 app.exe ActnList TCustomAction.Execute
00431bb3 +013 app.exe Classes TBasicActionLink.Execute
004af384 +090 app.exe Menus TMenuItem.Click
004b059f +013 app.exe Menus TMenu.DispatchCommand
004b16fe +082 app.exe Menus TPopupList.WndProc
004b164d +01d app.exe Menus TPopupList.MainWndProc
004329a8 +014 app.exe Classes StdWndProc
7e4196b2 +00a USER32.dll DispatchMessageA
004bea60 +0fc app.exe Forms TApplication.ProcessMessage
004bea9a +00a app.exe Forms TApplication.HandleMessage
004becba +096 app.exe Forms TApplication.Run
008482c5 +215 app.exe AppName 129 +42 initialization

我一直无法弄清楚导致这种情况的原因,而且由于这种情况很少发生,我也没有担心过,但我想找出导致它的原因并希望纠正它......

编辑:完整堆栈跟踪

编辑 2: 更多信息...今天经历过这种情况的客户已经安装了我的应用程序大约 4 个月,并且每天在他的 PC 上运行 8 小时。这个问题直到今天才出现,并且不断重复出现,即使他杀死了我的应用程序并重新启动它。他系统上的其他应用程序都没有表现异常。重新启动后问题完全消失。这是否表明了史蒂夫提到的堆短缺问题?

编辑 3: 有趣的 msdn 博客文章 herehere关于桌面堆的主题。虽然我不确定这是否是问题的原因,但看起来确实有可能。

最佳答案

实际上这是ATOM表的问题。 I reported this issue to Embarcadero ( saved in Wayback Machine )因为它让我感到很多悲伤。

如果您监视全局原子表,您将看到 Delphi 应用程序正在泄漏原子,从而保留应用程序的 id,而不会将其从内存中删除:

您将看到大量以下项目:

**Delphi000003B4*

*Controlofs0040000000009C0**

基本上,由于一旦您请求另一个消息 ID,您就无法注册超过 0xFFFF 的不同 Windows 消息 ID,系统将返回“系统错误。代码:8。没有足够的存储空间来处理此问题”命令”。然后您将无法启动任何创建窗口的应用程序。

Another issue ( saved in Wayback Machine ) 已在 Embarcadero QC Central 中报告。

此问题在 Windows 7/Windows Server 2008 下出现。事实上,在 Windows Server 2003 及其之前运行的事实是由于错误的实现,一旦 AT​​OM 的索引环绕最大 16384 个单位,就会回收 ATOM。

欢迎使用我的Global Atom Monitor检查您的 Delphi 应用程序是否存在原子泄漏。

要解决此问题,您需要 Embarcadero 的补丁,或下载 ControlsAtomFix1.7z来自www.idefixpack.de/blog/downloads .

关于delphi - 系统错误。代码 : 8. 没有足够的存储空间来处理此命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/507853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com