摘要:
valgrind为何 报 ecpg内存泄露错误?根据我的同事的研究成果:究其原因,全局变量 sqlca 由malloc形成,但是释放时是隐含的:ecpg_sqlca_key_destructor函数调用 free 进行释放。boolECPGconnect(int lineno, int c, const char *name, const char *user, const char *passwd, const char *connection_name, int autocommit){struct sqlca_t *sqlca = ECPGget_sqlca(); ....... 阅读全文
摘要:
真是原因到底是什么呢?由于 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);}而一个很单纯的程序,如果没有上述一段程序,就不会被 va... 阅读全文
摘要:
客户说valgrind 报告 ecpg内存泄露,实际到底如何呢?用程序来进行验证:我的test.pc 程序:#include <stdio.h> #include <string.h> #include <stdlib.h> int tst_connectdb(const char *Uid,const char *Pswd,const char *Host,ch... 阅读全文
摘要:
如果是在PPAS环境下,需要: ln -s /opt/PostgresPlus/9.1AS/lib/libpq.so /usr/lib/libpq.so.5 ln -s /opt/PostgresPlus/9.1AS/lib/libpgtypes.so.3 /usr/lib/libpgtypes.so.3 LD_LIBRARY_PATH=/opt/PostgresPlus/9.1AS/lib export LD_LIBRARY_PATH如果我们的程序原名 sample.pgc, 则可以分两步进行编译: ecpg -o sample.c sample.pgc gcc -o sample samp 阅读全文