valgrind 报告 ecpg内存泄露 (二)
真是原因到底是什么呢?
由于 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){ exit(0); }
而一个很单纯的程序,如果没有上述一段程序,就不会被 valgrind 报错。