在strdup中的Valgrind内存泄漏

史密斯·德韦恩

我正在做一个小项目。我正在使用工具Valgrind检查内存泄漏。当我使用此工具时,我得到了以下信息。

> 584 bytes in 74 blocks are definitely lost in loss record 103 of 104
> ==4628==    at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
> ==4628==    by 0x41CF8D0: strdup (strdup.c:43)
> ==4628==    by 0x8060B95: main (in mycall)
> 
> LEAK SUMMARY:
> ==4628==    definitely lost: 584 bytes in 74 blocks
> ==4628==    indirectly lost: 0 bytes in 0 blocks
> ==4628==      possibly lost: 0 bytes in 0 blocks
> ==4628==    still reachable: 21,414 bytes in 383 blocks
> ==4628==         suppressed: 0 bytes in 0 blocks
> ==4628== 
> ==4628== For counts of detected and suppressed errors, rerun with: -v
> ==4628== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

这些是我使用功能strdup的编码。我已经在LEX代码中使用过。

{string}    {

    yylval.string = strdup(yytext + 1);
    yylval.string[yyleng - 2] = 0;
    return PPSTRING;
    }

{numvar}        { yylval.string = strdup(yytext);return(PPNUMVAR);      }
{sysnumvar}     { yylval.string = (char *) strdup(yytext);return(PPSYSNUMVAR);  }

我不知道在哪一点内存已泄漏。

Peixu Zhu

strdup函数分配必要的内存来隐式存储源字符串,您需要yylval.string手动释放返回的字符串(即,在您的代码中)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

strdup()结构中的内存泄漏

来自分类Dev

strdup和内存泄漏

来自分类Dev

重复strdup的内存泄漏

来自分类Dev

Valgrind中的内存泄漏和错误

来自分类Dev

内存泄漏C -Valgrind

来自分类Dev

内存泄漏 Valgrind

来自分类Dev

即使在free()之后,strdup()内存泄漏

来自分类Dev

Valgrind在std :: map中带有std :: string的内存泄漏

来自分类Dev

如何在脚本中获取valgrind是否发现内存泄漏?

来自分类Dev

让Valgrind从Python脚本调用的C ++程序中检测内存泄漏:

来自分类Dev

是否可以列出valgrind中内存泄漏的位置?

来自分类Dev

OSX El Capitan中可能的内存泄漏Valgrind

来自分类Dev

C ++ valgrind在Hello World中显示内存泄漏

来自分类Dev

Valgrind在std :: map中带有std :: string的内存泄漏

来自分类Dev

valgrind检测到的内存泄漏和库中的错误

来自分类Dev

valgrind检测到的内存泄漏和库中的错误

来自分类Dev

Valgrind内存泄漏检测

来自分类Dev

使用Valgrind追踪内存泄漏

来自分类Dev

在malloc上的Valgrind内存泄漏

来自分类Dev

使用Valgrind追踪内存泄漏

来自分类Dev

内存泄漏(Valgrind报告)(C ++)

来自分类Dev

valgrind如何计算示例内存泄漏?

来自分类Dev

C ++继承和valgrind内存泄漏

来自分类Dev

Valgrind报告QThread :: start()上的内存泄漏

来自分类Dev

sbrk-Valgrind不报告内存泄漏

来自分类Dev

解决valgrind“可能丢失”的内存泄漏

来自分类Dev

解决valgrind“可能丢失”的内存泄漏

来自分类Dev

glewInit()根据valgrind导致内存泄漏

来自分类Dev

Valgrind内存泄漏错误的文件跟踪