Dos libpcap自由内存如果自己?

时间:2013-01-24 07:07:33

标签: libpcap winpcap

我的程序使用libpcap,如下所示:

  

而pcaket = pcap_next(){

...

(modify the pcaket and do checksum)

...

pcap_sendpacket(pcaket) 
     

}

最近,我发现程序中存在内存泄漏......

我的问题是: libpcap会在pcap_next之后释放pcaket吗?或者我必须自己做免费工作?

1 个答案:

答案 0 :(得分:3)

  

libpcap会在pcap_next之后释放pcaket吗?

数据包包含在libpcap内部的缓冲区中(附加到pcap_t);没有为每个数据包分配新的缓冲区,因此缓冲区在pcap_next()之后不会被释放,它会在pcap_t关闭后释放。你不必自己释放它。

(这也意味着来自pcap_next()pcap_next_ex()的特定来电的分组数据保证在下次调用pcap_next()后仍然有效或pcap_next_ex() - 或pcap_loop()pcap_dispatch();它可能会被下一个数据包或下一批数据包中的数据覆盖。)