发现CreateDesktop创建虚拟桌面偶尔会出现内存不足,如何解决?

时间:2023-01-20 18:15:07
发现CreateDesktop创建桌面偶尔会出现内存不足的情况。 

        程序如下,一般情况下程序功能正常,创建桌面也成功,但系统打开许多软件,或者已经运行很久的电脑,就会偶尔 

        出现创建桌面失败的情况,读取返回Error的代码是8,发现是报告内存不足。(系统是2G内存) 

        只要关闭一些软件或者重启电脑就恢复正常了,请问如何解决这个问题? 

        也许在创建桌面时,可以多分配一些资源也就不会溢出了? 

        但CreateDesktop失败时,我从网上下载《虚拟桌面》,或微软Toy的多桌面程序创建桌面却都是正常的。 

        ------------------------------------------------ 
        char   *DesktopName="TDESK"; 
        desktop   =   CreateDesktop(   DesktopName,   NULL,   NULL,   0,   GENERIC_ALL,   NULL   ); 

        if   (!desktop) 
        { 
        DWord   Error=GetLastError(); 
                if   (Error==8) 
                { 
                ShowMessage("意外的内存不足,请关闭其他软件或重启电脑即可。");         
                } 
        throw   Exception("Desktop   create   fault");   //Win老版处理 
        }

14 个解决方案

#1


2G的还内存不够..?

-----

看看CPU
都正常的话
if()就不要了!

#2


This error message can be the result of the desktop heap setting in Windows.  The default settings for the third value is 512 kb.  The Windows registry must be used to adjust this setting.  

http://seer.entsupport.symantec.com/docs/245461.htm

#3


谢谢 dyw,这个解决办法我从网上也找到了许多,但需要改注册表,而且要重启。

但我用《虚拟桌面》或微软的TOY《虚拟桌面》,都还可以创建桌面,并没有修改注册表。

#4


确认下述情形:
1、对比《虚拟桌面》运行与未运行时注册表的值,看看其在运行时是否修改注册表。
2、在自己的创建桌面总是失败时,运行《虚拟桌面》,看后者是否能成功运行。

#5


1、《虚拟桌面》应该没有修改注册表,也没有重启过程。
2、在自己的创建桌面总是失败时,运行《虚拟桌面》,他们都是成功创建桌面的。

#6


难题顶上来

#7


偶尔嘛!那就是没问题。在微软的框架内编程,不死机就是运行成功了!

#8


把出现的问题推到别人身上,是不负责任的编程态度哦。
就算是微软的这个桌面创建不太完美,我想应该也有好的解决办法。

#9


mark

#10


有一个VB做的例子,lz可以测试一下是否存在同样的问题:
http://www.vbaccelerator.com/home/vb/code/Libraries/Windows/Creating_New_Desktops/VB6_New_Desktop_Sample.zip

解压后,双击NewDesktop6.exe即可运行。

#11


我晕2G都不够
  !!!!
  是不是内存没有及时释放造成的 
    具体怎么办我也不清楚
  呵呵

#12


虚拟桌面有哪些实际的使用价值呢?

#13


顺便问一下,CreateDesktop之后如何关闭此桌面?CloseDesktop似乎只能关闭句柄。。。

#14


有一个VB做的例子,lz可以测试一下是否存在同样的问题: 
http://www.vbaccelerator.com/home/vb/code/Libraries/Windows/Creating_New_Desktops/VB6_New_Desktop_Sample.zip 

解压后,双击NewDesktop6.exe即可运行。 


我已经试过了,当我的主程序出现错误时,我运行VB6_New_Desktop_Sample.zip 中的EXE也出错。

关闭掉所有UltraEdit后就恢复正常了。

而现在终端用户却没有报怨这个问题,我想是不是UltraEdit也开了许多桌面,而没有释放,导致资源不足。

#1


2G的还内存不够..?

-----

看看CPU
都正常的话
if()就不要了!

#2


This error message can be the result of the desktop heap setting in Windows.  The default settings for the third value is 512 kb.  The Windows registry must be used to adjust this setting.  

http://seer.entsupport.symantec.com/docs/245461.htm

#3


谢谢 dyw,这个解决办法我从网上也找到了许多,但需要改注册表,而且要重启。

但我用《虚拟桌面》或微软的TOY《虚拟桌面》,都还可以创建桌面,并没有修改注册表。

#4


确认下述情形:
1、对比《虚拟桌面》运行与未运行时注册表的值,看看其在运行时是否修改注册表。
2、在自己的创建桌面总是失败时,运行《虚拟桌面》,看后者是否能成功运行。

#5


1、《虚拟桌面》应该没有修改注册表,也没有重启过程。
2、在自己的创建桌面总是失败时,运行《虚拟桌面》,他们都是成功创建桌面的。

#6


难题顶上来

#7


偶尔嘛!那就是没问题。在微软的框架内编程,不死机就是运行成功了!

#8


把出现的问题推到别人身上,是不负责任的编程态度哦。
就算是微软的这个桌面创建不太完美,我想应该也有好的解决办法。

#9


mark

#10


有一个VB做的例子,lz可以测试一下是否存在同样的问题:
http://www.vbaccelerator.com/home/vb/code/Libraries/Windows/Creating_New_Desktops/VB6_New_Desktop_Sample.zip

解压后,双击NewDesktop6.exe即可运行。

#11


我晕2G都不够
  !!!!
  是不是内存没有及时释放造成的 
    具体怎么办我也不清楚
  呵呵

#12


虚拟桌面有哪些实际的使用价值呢?

#13


顺便问一下,CreateDesktop之后如何关闭此桌面?CloseDesktop似乎只能关闭句柄。。。

#14


有一个VB做的例子,lz可以测试一下是否存在同样的问题: 
http://www.vbaccelerator.com/home/vb/code/Libraries/Windows/Creating_New_Desktops/VB6_New_Desktop_Sample.zip 

解压后,双击NewDesktop6.exe即可运行。 


我已经试过了,当我的主程序出现错误时,我运行VB6_New_Desktop_Sample.zip 中的EXE也出错。

关闭掉所有UltraEdit后就恢复正常了。

而现在终端用户却没有报怨这个问题,我想是不是UltraEdit也开了许多桌面,而没有释放,导致资源不足。