詭異的valgrind記憶體洩漏問題

2021-09-28 23:59:13 字數 497 閱讀 3606

**如下,很簡單的幾行c**。

#include #include struct meminfo_t__attribute__((packed, aligned(1)));

struct meminfo_t minfo[2];

int main()

編譯執行後, 如果在第16行之後, sleep()時按下ctrl+c強制結束程式,

valgrind會報definitely lost: 10 bytes in 1 blocks,而不是still reachable,

如果正常執行退出,則沒有問題。

測試時使用valgrind v3.15.0版本。

後來發現是因為記憶體位址不對齊問題,結構體struct meminfo_t是單位元組對齊,導致第2個變數的ptr位址不是8位元組的整數倍,

但為啥valgrind為什麼會這麼報錯誤,不解!!!

記憶體洩漏 valgrind工具

1 安裝 tar jxvf valgrind 3.14.0.tar.bz2 cd valgrind 3.14.0 autogen.sh configure make make install 2 安裝成功之後即可使用命令valgrind valgrind help即可顯示引數 常用命令 valgri...

使用Valgrind查詢記憶體洩漏

在網上找了乙個c語言版本的base64 編譯通過,不過執行的時候報了corrupted size vs.prev size錯誤 網上查了一下資料,大致說是記憶體洩漏。但是怎麼分析哪兒洩漏,為什麼洩漏?在網上找到一款神器valgrind 專用於分析記憶體洩漏等各種疑難雜症。1 安裝 to instal...

C 記憶體洩漏定位 valgrind

new 和 delete 不匹配導致記憶體洩漏。最開始因為指標被我不小心delete了,導致有錯誤,就遮蔽了。網上學習了用valgrind 定位洩漏記憶體的位置,比較方便。然後,編譯源程式,比如 g g o testexe testexe.cpp 然後利用valgrind 進行定位,可執行程式可能有...