- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我正在使用cppcheck用于 C 代码的静态分析,但似乎无法获取 XML。我需要 Jenkins 使用 XML 文件 这是我迄今为止尝试过的: runcppcheck.sh #!/bin/sh cd
示例代码: class Foo { // cppcheck-suppress noExplicitConstructor Foo(int foo) { } } Cppcheck 调用:
我有一个非常简单的 C 程序,使用 strcpy 可能存在缓冲区溢出: #include #include void buffer_overflow(char* dst, const char*
我已经下载了 cppcheck 工具并构建了它。现在面临着找不到 cppcheck 命令的问题。有什么错误吗..建议我步骤.. 我在 gcc 编译器中尝试如下: > cd /home/tcsujth/
我有一个驱动 cppcheck 坚果的代码片段,因为它没有看到日志调用中使用的变量。所以我得到了未使用的变量和范围缩减警告: double start = GetTimeOfDayDouble
我已经下载了 cppcheck 工具并构建了它。现在面临着找不到 cppcheck 命令的问题。有什么错误吗..建议我步骤.. 我在 gcc 编译器中尝试如下: > cd /home/tcsujth/
我有一个定义 cppcheck 的 CMakefile,如 Cppcheck support in CMake效果很好,但我希望能够一遍又一遍地编译我的代码,并且在我认为我接近完成之前不运行 cppc
我用 cppcheck 分析了一些代码的错误和代码质量。我遇到了一个我认为是误报的错误。下面的代码示例显示了问题(用注释标记)。 cppcheck - v 1.89 #include #includ
我已经在 Windows 10 计算机上下载了 Codeblocks,现在我正在尝试在其上安装 CppCheck。 但是,也上网寻找解决方案,我无法理解如何安装 CppCheck(在 Codebloc
cppcheck 检测到以下代码中的资源泄漏。我认为这是一个假阴性。如果不是,你能向我解释一下为什么这是资源泄漏吗? bool fileExists(const char* filename) {
我有一个结构如下的项目: /path/to/project/source/library/ /path/to/project/tests/ 如果我跑 cppcheck --xml-version=2
我正在对以下代码运行 cppcheck bool bsIsBigEndian( void ) { return (((const int*)"\0\x1\x2\x3\x4\x5\x6\x7"
我知道 cppcheck 可以检查变量上空指针的取消引用。例如,这将触发 cpp 检查: int* a = NULL; *a = 5; 是否可以配置 cppcheck 以便它也验证函数返回的指针?像这
我已经为一个包含大量库的大型项目设置了 CPPCheck (v1.6.1)。 当我检查图书馆时,我会遇到一些我感兴趣的检查失败,一切都很好。但是此时我只有一个文本文件列表,其中包含我正在通过“--fi
我面临的情况是我需要 cppchecks 才能通过,但有时会变得很棘手。在这种情况下你通常会怎么做?例如。 #include using namespace std; void fun1(); int
所以在 main.c 中,我得到了打印加密内容的这部分代码如果它不为空。就这么简单。 cpp错误是: [main.c:40]: (error) Possible null pointer derefe
我只想对特定类型的文件而不是所有文件运行 cppcheck。 例如,我想对所有以“Operation.cpp”结尾的文件递归运行 cppcheck(主要是针对 *Operation.cpp)。我没有在
为什么 cppcheck 无法检测到像本例这样的程序中的内存泄漏,其中堆指针的所有权被传递给未能释放它的函数? #include void func(char *xx) { // do no
我正在尝试使用 cppcheck分析我的 C++ 项目。我的命令如下所示: me@home:trunk/software/cpp/tnoid$ cppcheck -v --enable=all --x
我有一个问题,有什么方法可以使用 cppcheck-htmlreport 从几个 xml 生成一个 html 文件? 通常我这样做: /cppcheck-htmlreport --file/vobs/
我是一名优秀的程序员,十分优秀!