2

My program use libpcap like this:

while pcaket = pcap_next() {

...

(modify the pcaket and do checksum)

...

pcap_sendpacket(pcaket) 

}

Recently, I found there is a memory leak in my program...

My question is: Will the libpcap free the pcaket after pcap_next? or I have to do the free work myself ?

4

1 に答える 1

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()

于 2013-01-24T20:58:08.733 に答える