2013-12-16 51 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的非常愚蠢的腳本,我仍然會得到上面描述的最小內存泄漏。