本文转自http://eslxf.blog.51cto.com/918801/198581
1.3.3 pcap_freealldevs函数
函数的主要代码如下:
void
pcap_freealldevs(pcap_if_t *alldevs)
{
pcap_if_t *curdev, *nextdev;
pcap_addr_t *curaddr, *nextaddr;
/*遍历链表,释放各节点所占用的资源*/
for (curdev = alldevs; curdev != NULL; curdev = nextdev) {
nextdev = curdev->next;
// 释放所有的地址所占的内存资源
for (curaddr = curdev->addresses; curaddr != NULL; curaddr = nextaddr) {
nextaddr = curaddr->next;
if (curaddr->addr)
free(curaddr->addr);
if (curaddr->netmask)
free(curaddr->netmask);
if (curaddr->broadaddr)
free(curaddr->broadaddr);
if (curaddr->dstaddr)
free(curaddr->dstaddr);
free(curaddr);
}
//释放接口的名字所占的内存资源
free(curdev->name);
//释放接口的描述所占的内存资源
if (curdev->description != NULL)
free(curdev->description);
//释放该接口
free(curdev);
}
}