你好,我得到了使用的valgrind 當我與valgrind --leak-check=full
使用它,事後excution文件的名稱,它告訴我在哪個區塊內存泄漏是一個問題,但如果我不能找到哪個我確實使用免費的指針。 是否有某種標誌指示指針的名稱。 如果無論如何告訴我在視覺工作室的泄漏位置,我也非常想聽到它發現內存泄漏在Linux環境
1
A
回答
1
它不能告訴你指針的名字,因爲一個內存泄漏的整體思路是,在內存沒有指針指向的話(至少,供種泄漏是Valgrind的描述爲「肯定輸了」)。
它所可以告訴你的是源文件和行號的分配內存 - 那麼你就需要查找該行源代碼以找出其中的內存是應該被釋放。例如,如果Valgrind的負的戰績看起來像:
==17110== 49 bytes in 1 blocks are definitely lost in loss record 17 of 35
==17110== at 0x4023D6E: malloc (vg_replace_malloc.c:207)
==17110== by 0x80C4CF8: do_foo (foo.c:1161)
==17110== by 0x80AE325: xyzzy (bar.c:466)
==17110== by 0x8097C46: io (bar.c:950)
==17110== by 0x8098163: main (quux.c:1291)
然後,你需要看看行1161在foo.c
,這是功能do_foo()
內。這是內存分配的地方(與malloc()
),只有你可以說它應該被釋放的地方。
1
你沒有說你正在使用哪種編譯器,我想gcc? 您是否使用-g
來包含調試符號?
+0
是的,我使用GCC,沒有我沒有使用-g – 2010-08-28 08:36:51
+0
在這種情況下使用-g和檢查,因爲調試符號可能不可用 – 2010-08-28 09:44:22
相關問題
- 1. C++發現內存泄漏
- 2. 特定於環境的內存泄漏
- 3. Linux和內存泄漏
- 4. 單線程實現多線程環境的內存泄漏
- 5. 泄漏工具沒有發現泄漏,但內存不釋放
- 6. XMLHttpRequest循環內存泄漏
- 7. WPF發現資源和內存泄漏
- 8. valgrind沒有發現內存泄漏?
- 9. 在Linux上調試內存泄漏
- 10. NSInvocation觸發內存泄漏
- 11. InputStream發生內存泄漏?
- 12. WPF - 邊境與OpacityMask/VisualBrush:內存泄漏
- 13. 我在循環中泄漏內存嗎?
- 14. Malloc在循環導致內存泄漏
- 15. 內存泄漏
- 16. 內存泄漏:
- 17. 內存泄漏
- 18. 內存泄漏
- 19. 內存泄漏
- 20. 內存泄漏
- 21. 內存泄漏
- 22. 內存泄漏
- 23. 內存泄漏
- 24. 內存泄漏
- 25. 內存泄漏:
- 26. 內存泄漏
- 27. 內存泄漏
- 28. 內存泄漏
- 29. 內存泄漏
- 30. 內存泄漏
你能告訴我什麼是命令,看看在哪裏創建內存泄漏請 – 2010-08-29 00:12:35
@Nadav:上面的例子來自正常的Valgrind輸出。這就是你需要的。 – caf 2010-08-29 00:50:15