我编写了一个外部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()
函数正确,内存也会泄漏。
答案 0 :(得分:1)
@MartinMorgan是对的!即使我运行一个只有1+1
的非常愚蠢的脚本,我仍然会得到上面描述的最小内存泄漏。