📄 subject_23416.htm
字号:
<p>
序号:23416 发表者:汪大为 发表日期:2002-12-04 09:00:39
<br>主题:抓包并写入文件,内存为什么不断增长?急急急!!
<br>内容:IPBuff=new char[5120];<BR>while(1)<BR> { <BR> ::memset(IPBuff,0,MAX_RECEIVE_LEN); //清零<BR> ::recv(packdlg->socket,IPBuff,MAX_RECEIVE_LEN,0);//接收<BR> CString filename;<BR> filename.Format("f:\\%d.txt",packdlg->i);//文件名<BR> HANDLE hFile; <BR> hFile = CreateFile(filename, // create i.TXT <BR> GENERIC_WRITE, // open for writing <BR> 0, // do not share <BR> NULL, // no security <BR> CREATE_NEW, // overwrite existing <BR> FILE_ATTRIBUTE_NORMAL, // normal file <BR> NULL); // no attr. template <BR><BR> packdlg->i++; <BR> ::WriteFile(hFile,IPBuff,(DWORD)MAX_RECEIVE_LEN,&dwwritten,NULL);//写入文件<BR> ::CloseHandle(hFile);//关闭文件<BR> } //while <BR>请高手看看上面的代码,我是实现抓包,抓到一个包,我就写入文件,可是这样总是内存在不断增长,请高手指点,在下感激不尽。解决问题马上给分。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Tuu Puu 回复日期:2002-12-04 09:05:53
<br>内容:你那<BR><BR>IPBuff=new char[5120];<BR><BR>对应的delete在那呢?<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:汪大为 回复日期:2002-12-04 09:12:15
<br>内容:我始终用那块new的内存接收数据,所以我没释放那块内存,但这并不能使内存不断增长呀。请您再看看,盼!<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2002-12-04 09:42:58
<br>内容:::CloseHandle(hFile);//关闭文件<BR>m_hFile=NULL;<BR>加上这句试试!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Tuu Puu 回复日期:2002-12-04 09:43:01
<br>内容:把CString那个改成用普通的字符数组试试看,也不怎么清楚,不过你可以用注释法隔离出是那句(或那些句)导致内存不断增长(如不写文件了,只是空转什么地)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:汪大为 回复日期:2002-12-04 09:55:09
<br>内容:我让它空转注释掉写文件那一部分,就没问题。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Norton AntiVirus 回复日期:2002-12-04 10:31:29
<br>内容:HANDLE hFile;<BR><BR>建议放在循环外面
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:John Lan 回复日期:2002-12-04 23:19:01
<br>内容:当你写文件的时候,OS会把文件内容写在Cache里,不会立即flush到磁盘上<BR>由于你不断的CreateFile/WriteFile所以,系统空间会不断减少。<BR>建议你文件创建一个就可以了,在文件内部分开不同的包就可以了.<BR>时间长了,小文件会很多,造成磁盘碎片很多,这又会造成磁盘I/O的<BR>降低,如果是个Service,在网络I/O密集的地方,你的机器估计<BR>很快就会崩溃.建议重新修改你的I/O算法.<BR>2002-12-4 23:22:20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -