c - 使用 udev 函数时内存泄漏
问题描述
我写了一个函数来检查连接的USB设备是否是我的产品,使用PID值和vid值。我使用 udev 函数做到了这一点。当我使用 Valgrind 运行代码时,它在 udev 函数中显示内存泄漏......我已附上代码及其显示的错误。请帮帮我。这是我的代码
函数调用:
video_node_dir = opendir("/sys/class/video4linux/");
if(video_node_dir == NULL)
{
printf("%s():opendir failed\n", __func__);
}
else
{
while((video_node = readdir(video_node_dir))!= NULL)
{
if(video_node->d_type == DT_LNK)
{
strcpy(video_node_name,video_node->d_name);
if(enumerateDevices(video_node_name))
{
printf("%s",DeviceName);
}
}
}
}
函数定义:
这个函数只有内存泄漏。
bool enumerateDevices(char* dev_name)
{
bool mydevice=false ;
struct udev *udev;
struct udev_enumerate *enumerate;
struct udev_list_entry *devices, *dev_list_entry;
struct udev_device *dev,*pdev;
char parameter[32] = "video4linux";
/* Create the udev object */
udev = udev_new();
if (!udev) {
return false;
}
enumerate = udev_enumerate_new(udev);
udev_enumerate_add_match_subsystem(enumerate, parameter);
udev_enumerate_scan_devices(enumerate);
devices = udev_enumerate_get_list_entry(enumerate);
udev_list_entry_foreach(dev_list_entry, devices) {
const char *path;
path = udev_list_entry_get_name(dev_list_entry);
dev = udev_device_new_from_syspath(udev, path);
pdev = udev_device_get_parent_with_subsystem_devtype(
dev,
"usb",
"usb_device");
char *vidValue = "2560",*pidValue = "c1d4";
if(strstr(path,dev_name)!=NULL)
{
if (strcmp(udev_device_get_sysattr_value(pdev,"idVendor"),vidValue) == 0)
{
if (strcmp(udev_device_get_sysattr_value(pdev,"idProduct"),pidValue) == 0){
mydevice=true;
const char* productName = udev_device_get_sysattr_value(pdev,"product");
strcpy(DeviceName, productName);
}
else{
mydevice=false;
break;
}
}
else
{
mydevice=false;
break;
}
}
else{
continue;
}
udev_device_unref(dev);
}
udev_enumerate_unref(enumerate);
udev_unref(udev);
return mydevice;
}
显示的错误是
==4845== HEAP SUMMARY:
==4845== in use at exit: 39,336 bytes in 114 blocks
==4845== total heap usage: 809 allocs, 695 frees, 707,030 bytes allocated
==4845==
==4845== 8 bytes in 2 blocks are still reachable in loss record 1 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AADF: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052D9E: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40535AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 8 bytes in 2 blocks are still reachable in loss record 2 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AADF: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052DB4: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40535AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 12 bytes in 2 blocks are still reachable in loss record 3 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AACB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052D9E: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40535AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 12 bytes in 2 blocks are still reachable in loss record 4 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AACB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052DB4: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40535AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 16 bytes in 2 blocks are still reachable in loss record 5 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AACB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4056103: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x405669E: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4047E61: udev_device_new_from_syspath (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x400FFC: enumerateDevices (deviceenum.c:33)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 16 bytes in 2 blocks are still reachable in loss record 6 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AACB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4056103: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x405669E: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052C74: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CBE8: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 16 bytes in 2 blocks are still reachable in loss record 7 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AACB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4056103: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x405669E: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052C74: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC5C: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 16 bytes in 2 blocks are still reachable in loss record 8 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AACB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052FCB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4053721: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 16 bytes in 4 blocks are still reachable in loss record 9 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AADF: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x405272A: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052994: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC1D: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 16 bytes in 4 blocks are indirectly lost in loss record 10 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x405270C: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052994: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC1D: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 32 bytes in 4 blocks are still reachable in loss record 11 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AACB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x405319A: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40536CA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 40 bytes in 4 blocks are still reachable in loss record 12 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AACB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x405272A: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052994: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC1D: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 42 bytes in 2 blocks are still reachable in loss record 13 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck- amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AADF: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052FCB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4053721: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 42 bytes in 2 blocks are indirectly lost in loss record 14 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4F52A17: __vasprintf_chk (vasprintf_chk.c:80)
==4845== by 0x4F528F1: __asprintf_chk (asprintf_chk.c:32)
==4845== by 0x4052FB0: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4053721: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 50 bytes in 4 blocks are still reachable in loss record 15 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AADF: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x405319A: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40536CA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 50 bytes in 4 blocks are indirectly lost in loss record 16 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x405317C: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40536CA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 84 bytes in 2 blocks are still reachable in loss record 17 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AADF: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4056103: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x405669E: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052C74: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC5C: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 100 bytes in 2 blocks are still reachable in loss record 18 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AADF: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4056103: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x405669E: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052C74: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CBE8: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 138 bytes in 2 blocks are still reachable in loss record 19 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AADF: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4056103: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x405669E: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4047E61: udev_device_new_from_syspath (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x400FFC: enumerateDevices (deviceenum.c:33)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 146 bytes in 20 blocks are still reachable in loss record 20 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AACB: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4053779: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 236 bytes in 20 blocks are still reachable in loss record 21 of 32
==4845== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4EC5489: strdup (strdup.c:42)
==4845== by 0x404AADF: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4053779: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 768 bytes in 2 blocks are indirectly lost in loss record 22 of 32
==4845== at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x40516F7: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4056689: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4047E61: udev_device_new_from_syspath (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x400FFC: enumerateDevices (deviceenum.c:33)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 768 bytes in 2 blocks are indirectly lost in loss record 23 of 32
==4845== at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x40516F7: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4056689: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052C74: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CBE8: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 768 bytes in 2 blocks are indirectly lost in loss record 24 of 32
==4845== at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x40516F7: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4056689: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4052C74: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC5C: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 1,088 bytes in 4 blocks are indirectly lost in loss record 25 of 32
==4845== at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x4047547: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4047A7B: udev_device_get_parent (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC8D: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== 1,536 bytes in 4 blocks are still reachable in loss record 26 of 32
==4845== at 0x4C2FD5F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4845== by 0x404FEF5: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4054656: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404AB0E: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x4053779: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x40537AA: ??? (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x404CC3F: udev_device_get_parent_with_subsystem_devtype (in /lib/x86_64-linux-gnu/libudev.so.1.6.4)
==4845== by 0x401016: enumerateDevices (deviceenum.c:35)
==4845== by 0x401200: list_and_select_device (deviceenum.c:95)
==4845== by 0x40141D: storagecam_init (deviceenum.c:147)
==4845== by 0x4015F2: main (deviceenum.c:175)
==4845==
==4845== LEAK SUMMARY:
==4845== definitely lost: 544 bytes in 2 blocks
==4845== indirectly lost: 28,076 bytes in 26 blocks
==4845== possibly lost: 0 bytes in 0 blocks
==4845== still reachable: 10,716 bytes in 86 blocks
==4845== suppressed: 0 bytes in 0 blocks
==4845==
==4845== For counts of detected and suppressed errors, rerun with: -v
==4845== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
解决方案
推荐阅读
- r - 如何从字符向量在数据框中创建虚拟变量?
- javascript - 在不同的 html 元素上显示本地存储变量
- ubuntu - 如何为每个用户创建权限
- javascript - sendSignInLinkToEmail 函数是否适用于 firebase 模拟器?
- python - 是否可以使用字符串访问 numpy 数组?
- c - 如何释放和重新初始化二维数组?
- python - 如何切片围绕最小值的numpy数组区域(即点的每侧100个像素)
- r - 在 R 中 - 如果单元格值与列匹配,则返回值,否则在新数据框中为 0
- linux - 如何设置 /sys/module/printk/parameters/always_kmsg_dump 内核参数?
- python - 如何将 Pandas 数据框重命名为变量名的值