valgrind安裝與使用 使用valgrind檢測(cè)到sqlite3.c內(nèi)存泄漏,怎么處理?
使用valgrind檢測(cè)到sqlite3.c內(nèi)存泄漏,怎么處理?引用:引用:引用:init no close how can not leak。我的程序一直將數(shù)據(jù)存儲(chǔ)在SQLite數(shù)據(jù)庫(kù)中,因此代碼中
使用valgrind檢測(cè)到sqlite3.c內(nèi)存泄漏,怎么處理?
引用:引用:引用:init no close how can not leak。我的程序一直將數(shù)據(jù)存儲(chǔ)在SQLite數(shù)據(jù)庫(kù)中,因此代碼中沒有關(guān)閉的數(shù)據(jù)庫(kù)。SQLite數(shù)據(jù)庫(kù)總是開放的,這不合理嗎?如何將數(shù)據(jù)寫入數(shù)據(jù)庫(kù)而不泄漏?謝謝你的建議!當(dāng)您打開數(shù)據(jù)庫(kù)進(jìn)行讀寫操作時(shí),當(dāng)內(nèi)存沒有釋放時(shí)是正確的。如果你關(guān)閉數(shù)據(jù)庫(kù)而不釋放內(nèi)存,那就真的是一個(gè)漏洞。Valgrind應(yīng)該檢測(cè)malloc,但是沒有免費(fèi)消息被泄露,但是實(shí)際上你不需要發(fā)布
Valgrind MemCheck工具的用法如下:Valgrind--tool=MemCheck。/從上面的命令中,我們可以清楚地看到主命令是Valgrind,我們想要使用的工具是由“-tool”選項(xiàng)指定的。上面的“a.out”指的是我們想要用MemCheck運(yùn)行的可執(zhí)行文件。此工具可以檢測(cè)以下與內(nèi)存相關(guān)的問題:未釋放內(nèi)存的使用、釋放內(nèi)存的讀/寫、分配內(nèi)存塊末尾的讀/寫內(nèi)存泄漏、使用malloc/new/new[]和free/delete/delete[]重復(fù)釋放內(nèi)存注:以上列表不是很全面,但是它包含許多可以被工具檢測(cè)到的常見問題。讓我們逐一討論上面的場(chǎng)景:注意:下面討論的所有測(cè)試代碼都應(yīng)該使用GCC和-G選項(xiàng)編譯(用于在MemCheck的輸出中生成行號(hào))。正如我們?cè)趯程序編譯成可執(zhí)行文件之前所討論的,它需要經(jīng)歷四個(gè)不同的階段