• 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发

ShowModal 的对话框,多次反复打开/关闭后,出现问题,该如何解决?

kuyu9999 2004-12-24 12:49:36
我在动态库中,有这样一段代码:
frm1=new Tfrm1(Application);
frm1->ShowModal();
delete frm1;
frm1=NULL;

后经调试发现 在反复执行若干次(不定,有时候10多次,有时后几十次)后,出现下面的问题:
---------------------------
Debugger Exception Notification
---------------------------
Project test.exe raised exception class EOutOfResources with message '存储空间不足,无法处理此命令。
'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
请教各位高手,这是什么原因,该如何解决啊?
...全文
220 点赞 收藏 16
写回复
16 条回复
kuyu9999 2004年12月31日
晕啊,我发现是那套SnPack控件的问题,垃圾、垃圾!以后这种控件还是稳定了再放进来啊!
回复 点赞
Lonelywolf1899 2004年12月30日
Application->CreateForm(__classid(TForm1), &Form1);
//用这个创建窗体
回复 点赞
kuyu9999 2004年12月29日
------------------------------------------
Functions called:
delete (37 times)
strcpy (7 times)
SysReallocMem (243 times)
SysFreeMem (3229 times)
SysGetMem (3247 times)
memcpy (1 times)
delete[] (9 times)
free (32 times)
new[] (21 times)
new (42 times)
calloc (5 times)
malloc (29 times)
Resource types used:
object array (21 allocs, 20 max)
object (42 allocs, 30 max)
memory block (3281 allocs, 1270 max)
Modules used:
00400000 12/28/2004 15:49:26
E:\tianfangyetan\tianfangyetan\科技项目\PowerApplicationCommonFlat\source\exe
\Graph.exe
017E0000 12/29/2004 21:14:40
E:\tianfangyetan\tianfangyetan\科技项目\PowerApplicationCommonFlat\source\exe
\EP_CommonMMI.dll
01860000 12/27/2004 11:59:34
D:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl\SnPackCB6.bpl
01900000 02/01/2002 16:00:00 C:\WINNT\system32\vclx60.bpl
01940000 01/30/2003 06:04:00
D:\PROGRA~1\Borland\CBUILD~1\Bin\designide60.bpl
01A00000 02/01/2002 16:00:00 D:\PROGRA~1\Borland\CBUILD~1\Bin\BORLNDMM.DLL
02130000 12/28/2004 23:11:34
E:\tianfangyetan\tianfangyetan\科技项目\PowerApplicationCommonFlat\source\exe
\EP_CommonDataPro.dll
02220000 12/28/2004 23:11:46
E:\tianfangyetan\tianfangyetan\科技项目\PowerApplicationCommonFlat\source\exe
\EPCal.dll
02A70000 10/27/2003 21:06:18 C:\WINNT\system32\oledb32.dll
02AE0000 07/26/2000 15:37:04 C:\Program Files\Common Files\system\ole
db\MSDATL3.DLL
02E00000 06/19/2003 12:05:04 C:\WINNT\system32\IPHLPAPI.DLL
02E20000 01/10/2000 12:00:00 C:\WINNT\system32\MPRAPI.DLL
0CD00000 02/01/2002 16:00:00 D:\PROGRA~1\Borland\CBUILD~1\Bin\CG32.DLL
10000000 09/29/2004 14:05:20 D:\Program Files\Tencent\qq\QQHook.dll
10200000 03/29/2001 15:32:00 C:\WINNT\system32\MSVCRTD.dll
1B5D0000 10/03/2003 16:24:50 C:\WINNT\system32\MSWSTR10.DLL
1F320000 07/26/2000 15:36:54 C:\Program Files\Common
Files\system\msadc\msadce.dll
1F380000 08/03/2000 18:40:16 C:\Program Files\Common
Files\system\msadc\msadcer.dll
1F450000 07/26/2000 15:36:56 C:\Program Files\Common
Files\system\ado\msado15.dll
1F910000 09/05/2001 12:00:00 C:\WINNT\system32\OLEDB32R.DLL
32600000 01/30/2003 06:04:00 D:\PROGRA~1\Borland\CBUILD~1\Bin\CC3260MT.DLL
37210000 11/24/2004 13:57:46 C:\WINNT\DOWNLO~1\CnsMin.dll
40000000 01/30/2003 06:04:00 C:\WINNT\system32\rtl60.bpl
400B0000 02/01/2002 16:00:00 C:\WINNT\system32\vcl60.bpl
40310000 02/01/2002 16:00:00 C:\WINNT\system32\dbrtl60.bpl
40670000 02/01/2002 16:00:00 C:\WINNT\system32\vcldb60.bpl
5F400000 03/29/2001 15:32:00 C:\WINNT\system32\MFC42D.DLL
5F500000 03/29/2001 15:32:00 C:\WINNT\system32\MFCO42D.DLL
60A20000 11/27/2004 22:23:28 C:\WINNT\system32\PNCRT.dll
63000000 11/27/2004 22:23:30 C:\Program Files\Real\RealOne
Player\rpplugins\rpms3260.dll
65D20000 06/19/2003 12:05:04 C:\WINNT\system32\USP10.dll
68100000 06/19/2003 12:05:04 C:\WINNT\system32\RESUTILS.DLL
683A0000 03/12/2004 05:28:20 C:\WINNT\system32\MSDTCPRX.dll
68E90000 06/19/2003 12:05:04 C:\WINNT\system32\OLEPRO32.DLL
6A050000 03/12/2004 05:28:20 C:\WINNT\system32\MTXCLU.DLL
6ADF0000 03/12/2004 05:28:18 C:\WINNT\system32\comsvcs.dll
6BC20000 01/10/2000 12:00:00 C:\WINNT\system32\MFC42LOC.DLL
6C330000 06/19/2003 12:05:04 C:\WINNT\system32\LPK.DLL
6D880000 09/05/2001 12:00:00 C:\WINNT\system32\DBNETLIB.DLL
6D990000 06/19/2003 12:05:04 C:\WINNT\system32\SETUPAPI.DLL
6DD30000 01/10/2000 12:00:00 C:\WINNT\system32\INDICDLL.dll
71710000 08/29/2002 09:32:08 C:\WINNT\system32\COMCTL32.DLL
72C50000 03/12/2004 05:28:16 C:\WINNT\system32\CLBCATQ.DLL
738A0000 06/19/2003 12:05:04 C:\WINNT\system32\CLUSAPI.DLL
74BB0000 09/05/2001 12:00:00 C:\WINNT\system32\MSDART.DLL
74CD0000 12/17/2002 16:23:52 C:\WINNT\system32\DBmsLPCn.dll
74FA0000 01/10/2000 12:00:00 C:\WINNT\system32\WS2HELP.DLL
74FB0000 06/19/2003 12:05:04 C:\WINNT\system32\WS2_32.DLL
74FD0000 06/19/2003 12:05:04 C:\WINNT\system32\WSOCK32.DLL
750E0000 03/24/2004 10:15:20 C:\WINNT\system32\SAMLIB.dll
75100000 06/11/2004 00:58:04 C:\WINNT\system32\NETAPI32.dll
75150000 01/10/2000 12:00:00 C:\WINNT\system32\NETRAP.dll
75280000 01/10/2000 12:00:00 C:\WINNT\system32\oledlg.dll
75370000 08/06/2000 01:51:44 C:\Program Files\Common Files\system\ole
db\SQLOLEDB.DLL
753F0000 08/07/2000 10:49:38 C:\Program Files\Common Files\system\ole
db\SQLOLEDB.RLL
75490000 01/10/2000 12:00:00 C:\WINNT\system32\security.dll
75950000 06/19/2003 12:05:04 C:\WINNT\system32\LZ32.DLL
75E00000 06/19/2003 12:05:04 C:\WINNT\system32\IMM32.DLL
76AF0000 06/19/2003 12:05:04 C:\WINNT\system32\comdlg32.dll
77080000 06/19/2003 12:05:04 C:\WINNT\system32\CSCDLL.DLL
772A0000 08/20/2004 14:53:24 C:\WINNT\system32\SHLWAPI.DLL
77320000 06/19/2003 12:05:04 C:\WINNT\system32\DHCPCSVC.DLL
77340000 06/19/2003 12:05:04 C:\WINNT\system32\ADSLDPC.DLL
77370000 06/19/2003 12:05:04 C:\WINNT\system32\ACTIVEDS.DLL
773F0000 03/24/2004 10:15:18 C:\WINNT\system32\MSASN1.DLL
77480000 06/19/2003 12:05:04 C:\WINNT\system32\RASMAN.DLL
774A0000 06/19/2003 12:05:04 C:\WINNT\system32\RASAPI32.DLL
774E0000 01/10/2000 12:00:00 C:\WINNT\system32\ICMP.DLL
774F0000 06/19/2003 12:05:04 C:\WINNT\system32\TAPI32.DLL
77530000 01/10/2000 12:00:00 C:\WINNT\system32\winmm.dll
777C0000 06/19/2003 12:05:04 C:\WINNT\system32\WINSPOOL.DRV
777E0000 06/19/2003 12:05:04 C:\WINNT\system32\VERSION.dll
777F0000 01/10/2000 12:00:00 C:\WINNT\system32\RTUTILS.DLL
77810000 06/19/2003 12:05:04 C:\WINNT\system32\cscui.dll
77930000 06/19/2003 12:05:04 C:\WINNT\system32\WLDAP32.DLL
77960000 03/24/2004 10:15:16 C:\WINNT\system32\DNSAPI.DLL
77990000 06/19/2003 12:05:04 C:\WINNT\system32\OLEAUT32.dll
77A30000 03/12/2004 05:28:16 C:\WINNT\system32\ole32.dll
77BD0000 06/19/2003 12:05:04 C:\WINNT\system32\NTDSAPI.dll
77DF0000 03/24/2004 10:15:16 C:\WINNT\system32\USER32.dll
77E60000 06/22/2004 09:34:52 C:\WINNT\system32\KERNEL32.dll
77F40000 06/22/2004 09:34:52 C:\WINNT\system32\GDI32.dll
77F80000 03/24/2004 10:15:22 C:\WINNT\system32\ntdll.dll
78000000 06/19/2003 12:05:04 C:\WINNT\system32\msvcrt.dll
782D0000 03/11/2004 10:37:18 C:\WINNT\system32\msv1_0.dll
784A0000 03/12/2004 05:28:18 C:\WINNT\system32\TxfAux.Dll
786F0000 03/12/2004 05:28:16 C:\WINNT\system32\RPCRT4.DLL
78F90000 09/18/2004 16:24:36 C:\WINNT\system32\SHELL32.DLL
794D0000 08/06/2003 06:16:00 C:\WINNT\system32\USERENV.dll
796D0000 03/24/2004 10:15:16 C:\WINNT\system32\ADVAPI32.dll
797B0000 06/19/2003 12:05:04 C:\WINNT\system32\Secur32.dll
79B20000 06/22/2004 09:34:52 C:\WINNT\system32\MPR.DLL
79C40000 03/24/2004 10:15:18 C:\WINNT\system32\crypt32.dll
==========================================
回复 点赞
kuyu9999 2004年12月29日

Codeguard显示的内容:

Error 00001. 0x310000 (Thread 0x09B4):
Bad parameter: A bad memory block (0x1A10208) has been passed to the
function.
SysFreeMem(0x017E101E)

Call Tree:
0x40002FEF(=rtl60.bpl:0x01:001FEF)
0x018248A7(=EP_CommonMMI.dll:0x01:0438A7)
0x3267E2F5(=CC3260MT.DLL:0x01:07D2F5)
0x3267E813(=CC3260MT.DLL:0x01:07D813)
0x017E1688(=EP_CommonMMI.dll:0x01:000688)
0x77F8D96B(=ntdll.dll:0x01:00C96B)

------------------------------------------
Error 00002. 0x310000 (r) (Thread 0x09B4):
Bad parameter: A bad memory block (0x1A1021C) has been passed to the
function.
SysFreeMem(0x017E101E)

Call Tree:
0x40002FEF(=rtl60.bpl:0x01:001FEF)
0x018248DD(=EP_CommonMMI.dll:0x01:0438DD)
0x3267E2F5(=CC3260MT.DLL:0x01:07D2F5)
0x3267E813(=CC3260MT.DLL:0x01:07D813)
0x017E1688(=EP_CommonMMI.dll:0x01:000688)
0x77F8D96B(=ntdll.dll:0x01:00C96B)

------------------------------------------
Error 00003. 0x310000 (r) (Thread 0x09B4):
Bad parameter: A bad memory block (0x1A10230) has been passed to the
function.
SysFreeMem(0x017E101E)

Call Tree:
0x40002FEF(=rtl60.bpl:0x01:001FEF)
0x01824910(=EP_CommonMMI.dll:0x01:043910)
0x3267E2F5(=CC3260MT.DLL:0x01:07D2F5)
0x3267E813(=CC3260MT.DLL:0x01:07D813)
0x017E1688(=EP_CommonMMI.dll:0x01:000688)
0x77F8D96B(=ntdll.dll:0x01:00C96B)


回复 点赞
小笨象 2004年12月27日
frm1=NULL;是完全没有问题的,大家不要在这句话上看了。
Tfrm1 *frm1=new Tfrm1(Application->Handle); 试试。
最有可能的是你在frm1里有些东西没有释放。
你可以把Codeguard显示的内容贴上来看看,就知道错在哪里了。
回复 点赞
PlateDSP 2004年12月27日
frm1=new Tfrm1(Application);
改成
frm1=new Tfrm1(NULL);
回复 点赞
kuyu9999 2004年12月27日
是不是我用了SnPack那套控件的缘故啊,要是那样的话,可晕死人了?
回复 点赞
chenwanchun 2004年12月25日
应该是存在内存泄漏,打开Codeguard检查一下在什么地方出的问题.
回复 点赞
过客猫2020 2004年12月25日
从这几句看,是没有问题目,问题不是出在这里!在你的Form里,引用了资源,而没有释放!
回复 点赞
bmwyc 2004年12月25日
去掉
frml=NULL;
这句试试
回复 点赞
chiengod 2004年12月24日
打开project>options>codeguard,看看有什么内存问题
回复 点赞
commars 2004年12月24日


TForm* frm1=new Tfrm1(Application);
frm1->ShowModal();
delete frm1;
frm1=NULL;
回复 点赞
kuyu9999 2004年12月24日
to: chiengod(钱神爷)

我查了,是有问题,但那些信息看不懂,有这方面的资料吗?
回复 点赞
hela 2004年12月24日
关注!
回复 点赞
xrdsheng 2004年12月24日
Tfrm1里有资源没释放,如内存、设备句柄、计时器等
回复 点赞
h98458 2004年12月24日
frm1=new Tfrm1(Application);
frm1->ShowModal();
delete frm1;
frm1=NULL;//请问楼主,这句是什么意思呀,为什么要加句?
回复 点赞
发动态
发帖子
C++ Builder
创建于2007-08-02

2569

社区成员

10.2w+

社区内容

C++ Builder相关内容讨论区
社区公告
暂无公告