valgrind 報告 ecpg記憶體洩露 二

2021-09-22 08:41:14 字數 364 閱讀 9904

真是原因到底是什麼呢?

由於 exec sql connect 而導致 valgrind 報告 記憶體洩露錯誤。

那麼在同乙個程式裡面,加入  exec sql disconnect 後,會如何呢?

驗證的結果是,依然如此,還是會說 still reachable: 220 bytes in 1 blocks。

進一步的分析會發現,

即使沒有 exec sql connect 或者 exec sql disconnect

只要有對 sqlca 的引用,就會出被報告錯誤。

if(sqlca.sqlcode == 0)

而乙個很單純的程式,如果沒有上述一段程式,就不會被 valgrind 報錯。

valgrind 報告 ecpg記憶體洩露 二

真是原因到底是什麼呢?由於 exec sql connect 而導致 valgrind 報告 記憶體洩露錯誤。那麼在同乙個程式裡面,加入 exec sql disconnect 後,會如何呢?驗證的結果是,依然如此,還是會說 still reachable 220 bytes in 1 blocks...

valgrind 報告 ecpg記憶體洩露 四

我執行測試後的結論是這樣的 確實發生了記憶體洩漏。沒有 sqlca區域。因為,我修改了 src inte ces ecpg ecpglib misc.c的 後,ifdef enable thread safety static void ecpg sqlca key destructor void ...

valgrind 報告 ecpg記憶體洩露 三

valgrind為何 報 ecpg記憶體洩露錯誤?根據我的同事的研究成果 究其原因,全域性變數 sqlca 由malloc形成,但是釋放時是隱含的 ecpg sqlca key destructor函式呼叫 free 進行釋放。複製 bool ecpgconnect int lineno,int c...