J'utilise libudev pour détecter des périphériques USB. moniteur Initialiser et filtre:Libère de la mémoire lors de l'utilisation de libudev
struct udev* udev = udev_new();
if (udev == nullptr) { /* error handling */ }
struct udev_monitor* usb = udev_monitor_new_from_netlink(udev, "udev");
udev_monitor_filter_add_match_subsystem_devtype(usb, "usb", NULL);
udev_monitor_enable_receiving(usb);
while(! canceled) { /* setup fd, poll fd, process result */ }
Puis je libère les ressources allouées avec:
udev_monitor_unref(usb);
udev_unref(udev);
Mais parfois je reçois
* glibc détecté * ./usbtest: corrompus doubles liste liée: 0x084cc5d0 ***
J'ai essayé d'utiliser:
free(usb);
free(udev);
Mais plainte valgrind au sujet des fuites de mémoire.
Quelle est la bonne façon de libérer la mémoire dans ce cas?