Очиски памяти при обработке pcap-пакета
Я пишу программу для анализа pcap-файлов. Программа должна использовать минимум памяти. Задался вопросом какой из способов перебора пакетов самый оптимальный по памяти:
Использовать pcap_ex, который (как я понял), не очищает память после обработки, и использовать memcpy
while (1) { l_numPkts = pcap_next_ex(pcap, &header, &pkt_data); //do something memcpy(dst,pkt_data,size); }Использовать pcap_loop
pcap_loop(pcap, 0, func, NULL) void func(u_char *temp, const struct pcap_pkthdr *header, const u_char *data) { //... }Или лучше заморочиться и написать собственную функцию?
Я пока не очень хорошо разбираюсь в этой теме. Заранее спасибо!
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Эти функции просто двигают курсор по файлу замаппив его через mmap. Память дополнительно не выделяется. А вот за выделением памяти в dst ( memcpy(dst...) нужно следить самому.