2013-12-16 50 views
3

我写了一个外部C函数,由R .C()函数调用。为了检查没有发生内存泄漏,我使用来自Ubuntu的valgrind进行下一次呼叫。Valgrind显示内存泄漏,现在是什么? R:C()扩展

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()功能是正确的,内存泄漏。

+0

'Valgrind显示内存泄漏,现在是什么?':你应该必须解决这个问题。 – haccks

+0

“但该选项不可用”---这是什么意思?当你尝试使用它会发生什么? –

+0

@haccks:确实,但他(s)他问如何确定错误是什么,因为缺乏Valgrind输出。 –

回答

1

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