gpt4 book ai didi

Cppcheck : (error) Resource leak

转载 作者:行者123 更新时间:2023-12-01 11:44:02 38 4
gpt4 key购买 nike

我正在使用 C 进行一些学习,但无法识别内存泄漏情况

当我用 cppcheck 检查代码时:get (error) Resource leak: f

enum bus_type {
MEDIA_BUS_UNKNOWN,
MEDIA_BUS_VIRTUAL,
MEDIA_BUS_PCI,
MEDIA_BUS_USB,
};

static enum bus_type get_bus(char *device)
{
char file[PATH_MAX];
char s[1024];
FILE *f;

if (!strcmp(device, "/sys/devices/virtual"))
return MEDIA_BUS_VIRTUAL;

snprintf(file, PATH_MAX, "%s/modalias", device);
f = fopen(file, "r");
if (!f)
return MEDIA_BUS_UNKNOWN;
if (!fgets(s, sizeof(s), f)) /* <-- (error) Resource leak: f */
return MEDIA_BUS_UNKNOWN;
fclose(f);

if (!strncmp(s, "pci", 3))
return MEDIA_BUS_PCI;
if (!strncmp(s, "usb", 3))
return MEDIA_BUS_USB;

return MEDIA_BUS_UNKNOWN;
}

我觉得我在内存管理方面遗漏了一些东西。

最佳答案

您需要fclose您拥有的文件 fopen在函数中更早地进行编辑,否则您会泄漏 FILE* 分配和指向的资源.

例如:

if (!fgets(s, sizeof(s), f)) {
fclose(f);
return MEDIA_BUS_UNKNOWN;
}

希望这可以帮助!

关于Cppcheck : (error) Resource leak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077907/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com