好痛苦,急救
我有一用BCB编写的程序,采用了多线程的方式,
GetOperationInfo.cpp为用来从数据库取数据的线程,69行为onterminated=true;
main为主单元,189行为新建GetOperationInfo线程
该程序为一通讯程序,在接入压力很大时,该错误会产生。
codeguard的日志文件:
Error 00001. 0x300010 (Thread 0x0196):
Resource leak: The object (0x13F519C) was never deleted
The object (0x013F519C) [size: 364 bytes] was created with new
Call Tree:
0x0040B985(=NewIvr.exe:0x01:00A985) C:\wad\IVRBYMAST\GetOperationInfo.cpp#69
0x00403318(=NewIvr.exe:0x01:002318) C:\wad\IVRBYMAST\Main.cpp#189
0x00484B6C(=NewIvr.exe:0x01:083B6C)
0x004556AD(=NewIvr.exe:0x01:0546AD)
0x004875C8(=NewIvr.exe:0x01:0865C8)
0x0048709B(=NewIvr.exe:0x01:08609B)
------------------------------------------
------------------------------------------
Functions called:
delete (993 times)
memcmp (29804 times)
strcpy (1 times)
vsnprintf (6144 times)
time (6228 times)
memset (9218 times)
SysReallocMem (9226 times)
SysFreeMem (315759 times)
SysGetMem (316365 times)
lstrcpyA (7 times)
lstrlenA (7 times)
lstrcpynA (4 times)
realloc (1 times)
memcpy (22388 times)
delete[] (2 times)
free (3800 times)
new[] (14 times)
new (1003 times)
calloc (5 times)
malloc (3804 times)
Resource types used:
object array (14 allocs, 13 max)
object (1003 allocs, 35 max)
memory block (320171 allocs, 700 max)
Modules used:
00400000 07/02/2001 14:27:48 C:\wad\IVRBYMAST\NewIvr.exe
03EB0000 05/11/1998 00:00:00 C:\WINNT40\System32\msnsspc.dll
03ED0000 05/11/1998 00:00:00 C:\WINNT40\System32\msidle.dll
0CD00000 01/31/2000 05:00:00 C:\WINNT40\System32\CG32.DLL
10000000 06/26/2001 18:05:28 C:\wad\IVRBYMAST\glclient.dll
1F700000 06/03/1999 00:00:00 C:\WINNT40\System32\odbc32.DLL
1F750000 06/03/1999 00:00:00 C:\WINNT40\System32\odbccp32.dll
1F7F0000 06/03/1999 00:00:00 C:\WINNT40\System32\odbcint.dll
32500000 01/31/2000 05:00:00 C:\PROGRA~1\Borland\CBUILD~1\Bin\CC3250MT.DLL
41000000 01/31/2000 05:00:00 C:\WINNT40\BORLNDMM.DLL
41100000 04/05/1999 04:57:48 C:\WINNT40\System32\SQLWOA.dll
41230000 10/29/1996 00:00:00 C:\WINNT40\System32\sqlsrv32.dll
4BDE0000 11/12/1999 05:11:00 C:\Program Files\Common Files\Borland
Shared\BDE\IDAPI32.DLL
4C9E0000 11/12/1999 05:11:00 C:\Program Files\Common Files\Borland
Shared\BDE\IDR20009.DLL
4D9E0000 11/12/1999 05:11:00 C:\Program Files\Common Files\Borland
Shared\BDE\IDODBC32.DLL
4E8E0000 11/12/1999 05:11:00 C:\Program Files\Common Files\Borland
Shared\BDE\BANTAM.DLL
5CF00000 05/20/1999 12:00:00 C:\WINNT40\System32\CRYPT32.dll
5E380000 05/20/1999 12:00:00 C:\WINNT40\System32\MSOSS.dll
60000000 05/11/1998 00:00:00 C:\WINNT40\System32\msapsspc.dll
65340000 08/31/1999 16:55:18 C:\WINNT40\system32\oleaut32.dll
70970000 05/11/1998 18:25:26 C:\WINNT40\system32\SHELL32.dll
71040000 05/11/1998 00:00:00 C:\WINNT40\system32\SHLWAPI.dll
73330000 04/05/1999 03:21:46 C:\WINNT40\System32\DBMSSOCN.DLL
74720000 05/20/1999 12:00:00 C:\WINNT40\System32\rnr20.dll
75350000 05/20/1999 12:00:00 C:\WINNT40\System32\NDDEAPI.DLL
76800000 11/26/1996 00:00:00 C:\WINNT40\System32\INDICDLL.dll
76820000 05/20/1999 12:00:00 C:\WINNT40\system32\IMM32.dll
77400000 05/20/1999 12:00:00 C:\WINNT40\System32\schannel.dll
775F0000 05/20/1999 12:00:00 C:\WINNT40\system32\msafd.dll
77606C35 05/20/1999 12:00:00 C:\WINNT40\System32\WSOCK32.dll
77620000 05/20/1999 12:00:00 C:\WINNT40\System32\wshtcpip.dll
77630000 05/20/1999 12:00:00 C:\WINNT40\System32\WS2HELP.dll
77640000 05/20/1999 12:00:00 C:\WINNT40\System32\WS2_32.dll
776B0000 05/20/1999 12:00:00 C:\WINNT40\system32\MPR.dll
77780000 05/20/1999 12:00:00 C:\WINNT40\system32\SAMLIB.dll
777A0000 05/20/1999 12:00:00 C:\WINNT40\system32\NETAPI32.dll
777E0000 11/26/1996 00:00:00 C:\WINNT40\system32\NETRAP.dll
77960000 11/26/1996 00:00:00 C:\WINNT40\system32\LZ32.dll
77A70000 11/26/1996 00:00:00 C:\WINNT40\system32\VERSION.DLL
77A80000 05/20/1999 12:00:00 C:\WINNT40\system32\COMCTL32.dll
77B00000 05/20/1999 12:00:00 C:\WINNT40\system32\ole32.dll
77BC0000 05/20/1999 12:00:00 C:\WINNT40\System32\rpcltc1.dll
77BD0000 05/20/1999 12:00:00 C:\WINNT40\System32\WINSPOOL.DRV
77CD0000 05/20/1999 12:00:00 C:\WINNT40\System32\security.dll
77D50000 05/20/1999 12:00:00 C:\WINNT40\system32\comdlg32.dll
77D90000 05/20/1999 12:00:00 C:\WINNT40\system32\ADVAPI32.dll
77DE0000 05/20/1999 12:00:00 C:\WINNT40\system32\RPCRT4.dll
77E40000 05/20/1999 12:00:00 C:\WINNT40\system32\user32.dll
77EA0000 05/20/1999 12:00:00 C:\WINNT40\system32\GDI32.dll
77ED0000 05/20/1999 12:00:00 C:\WINNT40\system32\kernel32.dll
77F50000 05/20/1999 12:00:00 C:\WINNT40\System32\ntdll.dll
78000000 09/10/1999 02:00:00 C:\WINNT40\system32\MSVCRT.dll
7801EB3D 10/14/1996 01:38:00 C:\WINNT40\System32\MSVCRT40.dll
780A0000 09/10/1999 02:00:00 C:\WINNT40\System32
问题点数:20、回复次数:6Top
1 楼songhtao(三十年孤独)回复于 2001-07-05 09:55:53 得分 20
GetOperationInfo.cpp有资源漏洞Top
2 楼jerryxie(baby)回复于 2001-07-07 17:52:22 得分 0
能说的具体些吗?
Resource leak: The object (0x13F519C) was never deleted
真的好难理解.Top
3 楼lovebcb(京华:开心人生)回复于 2001-07-07 17:54:56 得分 0
晕了Top
4 楼Wingsun(孙春阳)回复于 2001-07-07 18:02:09 得分 0
就是说你申请了一个对象,但是没有释放它,所以问题来了。
按照它的提示去找一找是哪一个对象然后释放就可以了。Top
5 楼songhtao(三十年孤独)回复于 2001-07-07 19:43:49 得分 0
C:\wad\IVRBYMAST\GetOperationInfo.cpp#69
估计在这里 Top
6 楼jerryxie(baby)回复于 2001-07-08 11:39:59 得分 0
谢谢大家,我已找到问题所在,是在线程在中止时发生异常,造成资源泄漏。
不过,还有个问题要请教大家,其实这才是我需要急救的问题。
在不断发送消息给另一个线程时,偶尔会发生发送的线程id号无效,
请问这是怎么回事,有好的方法解决吗,给个思路也行
Top




