⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_23416.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:23416 发表者:汪大为 发表日期:2002-12-04 09:00:39
<br>主题:抓包并写入文件,内存为什么不断增长?急急急!!
<br>内容:IPBuff=new char[5120];<BR>while(1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;::memset(IPBuff,0,MAX_RECEIVE_LEN);&nbsp;&nbsp;&nbsp;&nbsp;//清零<BR>&nbsp;&nbsp;&nbsp;&nbsp;::recv(packdlg-&gt;socket,IPBuff,MAX_RECEIVE_LEN,0);//接收<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString filename;<BR>&nbsp;&nbsp;&nbsp;&nbsp;filename.Format("f:\\%d.txt",packdlg-&gt;i);//文件名<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE hFile; <BR>&nbsp;&nbsp;&nbsp;&nbsp;hFile = CreateFile(filename,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // create i.TXT <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GENERIC_WRITE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// open for writing <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// do not share <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // no security <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE_NEW,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// overwrite existing <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILE_ATTRIBUTE_NORMAL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// normal file <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // no attr. template <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;packdlg-&gt;i++;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;::WriteFile(hFile,IPBuff,(DWORD)MAX_RECEIVE_LEN,&amp;dwwritten,NULL);//写入文件<BR>&nbsp;&nbsp;&nbsp;&nbsp;::CloseHandle(hFile);//关闭文件<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;//while&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>请高手看看上面的代码,我是实现抓包,抓到一个包,我就写入文件,可是这样总是内存在不断增长,请高手指点,在下感激不尽。解决问题马上给分。&nbsp;&nbsp;&nbsp;&nbsp;
<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 + -