Valgrind显示内存泄漏,现在是什么? R:C()扩展名

时间:2013-12-16 21:29:39

标签: c r memory-leaks

我编写了一个外部C函数,由R .C()函数调用。为了检查没有发生内存泄漏,我使用来自Ubuntu的valgrind进行下一次呼叫。

R --debugger=valgrind --vanilla < Desktop/eraseme.R

我没有错误。但我收到通知说我有内存泄漏。

==16347== HEAP SUMMARY:
==16347==     in use at exit: 30,440,904 bytes in 13,097 blocks
==16347==   total heap usage: 29,644 allocs, 16,549 frees, 134,692,871 bytes allocated
==16347== 
==16347== LEAK SUMMARY:
==16347==    definitely lost: 120 bytes in 2 blocks
==16347==    indirectly lost: 480 bytes in 20 blocks
==16347==      possibly lost: 0 bytes in 0 blocks
==16347==    still reachable: 30,440,304 bytes in 13,075 blocks
==16347==         suppressed: 0 bytes in 0 blocks
==16347== Rerun with --leak-check=full to see details of leaked memory

但是我不知道如何找到泄漏的来源。输出说我应该使用选项--leak-check=full运行它,但该选项不可用。

我怎样才能找到泄漏的来源?考虑到我正在运行R脚本,我必须对Valgrind进行哪个调用?

感谢您的时间。

编辑:当我说该选项不可用时,我的意思是当我寻找它时我只有这个选项。

--arch                --help                --min-vsize           --no-restore-history  --silent
--args                --interactive         --no-environ          --no-save             --slave
--debugger-args       --max-nsize           --no-init-file        --no-site-file        --vanilla
--encoding            --max-ppsize          --no-readline         --quiet               --verbose
--file                --max-vsize           --no-restore          --restore             --version
--gui                 --min-nsize           --no-restore-data     --save    

编辑:所以R确实表明即使C()函数正确,内存也会泄漏。

1 个答案:

答案 0 :(得分:1)

@MartinMorgan是对的!即使我运行一个只有1+1的非常愚蠢的脚本,我仍然会得到上面描述的最小内存泄漏。