为什么我的程序运行以后内存使用量不停的增长?
在windows的任务管理器里看到,我的程序使用的内存不断增加.
程序里没有用new ,malloc等等,都是最简单的定义方法 char buf[10000]之类的
有一个函数里定义并建立新的套接字,并设置socket的发送缓冲区和接收缓冲区为10000,收发数据结束后,该函数将套接字close
这个函数每隔两秒被调用一次.
这个会影响内存使用吗?????
请各位指教!!
问题点数:20、回复次数:24Top
1 楼opentuxedo(借哥哥的号来试试)回复于 2004-09-04 12:54:41 得分 1
释放句柄!Top
2 楼gloriajie()回复于 2004-09-04 13:00:06 得分 0
不好意思能说的再详细一点吗?Top
3 楼eastsun()回复于 2004-09-04 13:11:48 得分 2
内存泄漏了。
Top
4 楼bobob(静思)回复于 2004-09-04 13:15:00 得分 1
把句柄也释放了
有的堆内存申请是隐含的Top
5 楼runall(龙行天下)回复于 2004-09-04 13:31:13 得分 1
CloseHandle();Top
6 楼eleek(宿迁人自己的社区(www.sqren.cn))回复于 2004-09-04 13:40:01 得分 2
该释放的系统资源要记得释放,既然是Socket编程,查查有关资料。Top
7 楼gloriajie()回复于 2004-09-04 14:07:28 得分 0
是不是可以用BoundsChecker查一下?Top
8 楼sdwalnut1(豆浆加油条)回复于 2004-09-04 15:53:34 得分 2
你定义的char buf[10000],也是要占用内存的,只不过是超出作用范围后,自己销毁。你把程序的结构整理以下,分配的内存,使用后就销毁,不然程序不推出,就一直占用内存的。Top
9 楼sjd163(sjd163)回复于 2004-09-04 16:21:49 得分 3
你的水管漏了。看看有什么要关闭的。Top
10 楼gloriajie()回复于 2004-09-04 17:44:48 得分 0
我在函数里定义的变量,函数调用结束,虽然程序没有结束,这些内存也应该收回了吧?
我用char buf[1000],这种方式定义的东东,不需要什么特别的语句另外收回内存把?Top
11 楼lifeequation(果皮)回复于 2004-09-04 18:04:30 得分 2
内存泄漏吧,估计是否则不会增长Top
12 楼gloriajie()回复于 2004-09-04 18:28:11 得分 0
我用了BoundsChecke来build,然后用f5运行,结果出来如下,好像没有我得程序的问题呀?
Loaded 'D:\WINNT\system32\ntdll.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\KERNEL32.DLL', no matching symbolic information found.
Loaded symbols for 'D:\WINNT\system32\MFC42D.DLL'
Loaded symbols for 'D:\WINNT\system32\MSVCRTD.DLL'
Loaded 'D:\WINNT\system32\GDI32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\USER32.DLL', no matching symbolic information found.
Loaded symbols for 'D:\WINNT\system32\MFCO42D.DLL'
Loaded 'D:\WINNT\system32\OLE32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\rpcrt4.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\ADVAPI32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\OLEAUT32.DLL', no matching symbolic information found.
Loaded symbols for 'D:\WINNT\system32\MFCN42D.DLL'
Loaded 'D:\WINNT\system32\wsock32.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\ws2_32.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\msvcrt.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\ws2help.dll', no matching symbolic information found.
Loaded 'D:\Program Files\rising\rav\ApiHook.dll', no matching symbolic information found.
Loaded 'D:\Program Files\rising\rav\Memmon.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\imm32.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\lpk.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\usp10.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\mfc42loc.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\indicdll.dll', no matching symbolic information found.
Loaded 'D:\WINNT\Downloaded Program Files\BDPlugin.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\version.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\lz32.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\comctl32.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\clbcatq.dll', no matching symbolic information found.
Loaded 'D:\Program Files\Common Files\System\ado\msado15.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\msdart.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\COMDLG32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\SHLWAPI.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\SHELL32.DLL', no matching symbolic information found.
Loaded 'D:\Program Files\Common Files\System\Ole DB\oledb32.dll', no matching symbolic information found.
Loaded 'D:\Program Files\Common Files\System\Ole DB\oledb32r.dll', no matching symbolic information found.
Loaded 'D:\Program Files\Common Files\System\Ole DB\sqloledb.dll', no matching symbolic information found.
Loaded 'D:\Program Files\Common Files\System\Ole DB\msdatl3.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\NETAPI32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\secur32.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\netrap.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\samlib.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\WLDAP32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\dnsapi.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\mswstr10.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\mswdat10.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\comsvcs.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\txfaux.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\msdtcprx.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\mtxclu.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\CLUSAPI.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\RESUTILS.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\USERENV.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\dbnetlib.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\security.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\MSV1_0.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\CRYPT32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\msasn1.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\ntdsapi.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\dcsws2.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\winmm.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\mmdrv.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\psapi.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\msafd.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\wshtcpip.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\RNR20.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\IPHLPAPI.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\icmp.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\mprapi.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\activeds.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\adsldpc.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\rtutils.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\SETUPAPI.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\RASAPI32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\RASMAN.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\tapi32.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\DHCPCSVC.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\winrnr.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\rasadhlp.dll', no matching symbolic information found.
Loaded 'D:\Program Files\rising\rav\ravproxy.dll', no matching symbolic information found.
Loaded 'D:\Program Files\Common Files\System\ado\msadrh15.dll', no matching symbolic information found.
The thread 0x270 has exited with code 1 (0x1).
The thread 0x578 has exited with code 1 (0x1).
The thread 0xA34 has exited with code 1 (0x1).
The thread 0x52C has exited with code 1 (0x1).
The thread 0x9B4 has exited with code 1 (0x1).
The thread 0x998 has exited with code 1 (0x1).
The thread 0x210 has exited with code 1 (0x1).
The thread 0x6D4 has exited with code 1 (0x1).
Loaded 'D:\WINNT\system32\psapi.dll', no matching symbolic information found.
Detected memory leaks!
Dumping objects ->
strcore.cpp(118) : {111} normal block at 0x00442B10, 26 bytes long.
Data: < 202.> 01 00 00 00 0D 00 00 00 0D 00 00 00 32 30 32 2E
oleinit.cpp(86) : {60} client block at 0x00441710, subtype 0, 68 bytes long.
a CCmdTarget object at $00441710, 68 bytes long
Object dump complete.
The thread 0x268 has exited with code 1 (0x1).
The program 'E:\丙烯晴项目\socket\BoundsChecke 收时间,优化(变量) 日志,sql登录,管理员,新数据库方法,系统端口\Debug\zsja.exe' has exited with code 1 (0x1).
这个strcore.cpp不是我写的程序呀Top
13 楼gloriajie()回复于 2004-09-04 18:29:51 得分 0
这一堆都是什么呀?哪位熟悉的能说说吗Top
14 楼crystal521(【云淡风轻】)回复于 2004-09-04 20:11:21 得分 2
socket是不Top
15 楼crystal521(【云淡风轻】)回复于 2004-09-04 20:12:42 得分 0
不好意思,快捷键按错了
你的socket是不是没有关闭Top
16 楼gloriajie()回复于 2004-09-04 20:42:43 得分 0
socket.close过了Top
17 楼gloriajie()回复于 2004-09-06 11:28:34 得分 0
经过长时间的测试(8,9小时),发现有的时候内存使用量会突然减小很多(3,4M),我的程序就是末端代码不断循环,没有别的操作,为什么会这样呢?
Top
18 楼superhandsome(帅得要崩溃)回复于 2004-09-06 11:52:39 得分 1
是不是有死循环Top
19 楼gloriajie()回复于 2004-09-07 21:59:59 得分 0
有ontimer
里面调用了一些函数,并且定义了一些变量Top
20 楼eastsun()回复于 2004-09-08 13:43:03 得分 2
Detected memory leaks!
Dumping objects ->
strcore.cpp(118) : {111} normal block at 0x00442B10, 26 bytes long.
Data: < 202.> 01 00 00 00 0D 00 00 00 0D 00 00 00 32 30 32 2E
oleinit.cpp(86) : {60} client block at 0x00441710, subtype 0, 68 bytes long.
a CCmdTarget object at $00441710, 68 bytes long
Object dump complete.
这些就是内存泄漏啊。
Top
21 楼eastsun()回复于 2004-09-08 13:52:53 得分 0
要记得调用CString::Release or Empty.
要记得调用AfxOleTerm.
一般程序中泄漏这26+68个字节也没有什么,也许你是反复循环调用,所以泄漏很多。Top
22 楼gloriajie()回复于 2004-09-10 22:30:48 得分 0
问题是strcore.cpp是什么东东呀?不是我得项目里的文件呢?那里来得?Top
23 楼111222(www.111222.cn)回复于 2004-09-11 01:40:02 得分 1
先生成MAP文件:
C/C++ Options里面加上 /Zd
Link Options: /mapinfo: exports /mapinfo: lines, 别忘了把generate mapfile选上.
然后用
0x00442B10 - 0x00400000 - 0x1000得到一个值, 再到map文件里面去找最接近的函数.
定位到函数以后, 再根据lines信息定位到行. 这样就应该可以定位到内存泄漏的地方了吧.Top
24 楼gloriajie()回复于 2004-09-11 10:55:13 得分 0
我得程序开启以后,我在OnInitDialog里直接写exit(0);什么都不做就跳出程序,他都会说strcore.cpp(118) : {67} normal block at 0x02491310, 49 bytes long.
Data: < > 01 00 00 00 04 00 00 00 20 00 00 00 CB CE CC E5
{66} normal block at 0x02491370, 60 bytes long.
Data: < > FF FF FF FF FB FB FB FB FB FB FB FB FB FB FB FB
oleinit.cpp(86) : {64} client block at 0x02491460, subtype 0, 72 bytes long.
a CCmdTarget object at $02491460, 72 bytes long
Object dump complete.
The thread 0x790 has exited with code 0 (0x0).
怎么回事呀?
111222大哥我用的vc里哪有你说的那些东东啊Top




