当前位置: 技术问答>linux和unix
如果非配完内存不进行释放会产生什么情况?
来源: 互联网 发布时间:2017-03-13
本文导语: 情况大体是这样:我在用libpcap进行循环抓包。整个程序是一直运行的。在抓到第一个包之后分配了内存给一个结构体,进行一些具体操作。但是分析完一个包之后并不释放内存。而是要用内存里面的数据进行跟下...
情况大体是这样:我在用libpcap进行循环抓包。整个程序是一直运行的。在抓到第一个包之后分配了内存给一个结构体,进行一些具体操作。但是分析完一个包之后并不释放内存。而是要用内存里面的数据进行跟下一个包数据进行比较,以此类推。这样的话这块内存一直存在,并不释放。这样会产生什么问题呢?
因为我在程序里面进行了另外的内存非配,产生了错误:malloc(): memory corruption: 。所以才注意到这个问题。
因为我在程序里面进行了另外的内存非配,产生了错误:malloc(): memory corruption: 。所以才注意到这个问题。
|
没问题呀,能有什么问题?
|
那说明你的程序有内存泄漏,存在没释放的内存。
唯一的解决办法就是你先把libpcap接口搞懂,有的是需要你主动释放的,另外找你程序的bug,malloc和free是否配对。
唯一的解决办法就是你先把libpcap接口搞懂,有的是需要你主动释放的,另外找你程序的bug,malloc和free是否配对。
|
严重的内存泄露。
|
只用比较相邻的包吗?如果是那就把前面不用的释放掉。
如果要将抓到的所有包进行相互匹配,,那就先将包抓住后放到文件中,,
抓完后在在文件中进行比较。
还有你想匹配的是什么? ip,port,tcp,udp头? 或者是数据部分? 前者就解析出来保存,,后者就放文件里面吧。
如果要将抓到的所有包进行相互匹配,,那就先将包抓住后放到文件中,,
抓完后在在文件中进行比较。
还有你想匹配的是什么? ip,port,tcp,udp头? 或者是数据部分? 前者就解析出来保存,,后者就放文件里面吧。
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。