首页 > odbc c的API编程,操作模式

odbc c的API编程,操作模式

这些基本操作每一个都需要成三对的申请SQLAllocHandle和释放SQLFreeHandle操作吗?如果是这个操作和同一个数据库连接,是不是就不用准备环境和连接数据库这两个中间操作了。这些操作是否可以共享准备环境和连接数据库中的两对申请和释放操作。
我在这里stackoverflow上提了这个问题。
https://stackoverflow.com/questions/25927004/odbc-memory-leaks-in-c


你用SQLAllocHandle申请哪种Handle呢?如果是statement handle,那么statement(就是你那个SQL语句)变了就要重新申请,其他的诸如connection handle之类当然不用了。

你在SO上写的问题还真是难懂,我只好猜一猜,你在问为什么看到SQLPrepare有内存泄露对不对?

因为没有具体的环境,我只好再猜一猜,首先要确保程序里正确调用了SQLFreeHandle,否则泄露就是你自己的问题。

如果你确认程序本身是对的,那么问题有可能出现在ODBC里面,ODBC API只是个壳子,具体工作其实都是在ODBC Driver里做的,因为你也没说你用的是哪个ODBC Driver,而MSSQL/Oracle之类的Driver我从来没听说过有这类问题,唯一有前科的是MySQL,据我所知,5.2.5及以前的MySQL ODBC Driver的确有内存泄露,至少去年的这个时候还有,但现在应该已经修复了,如果我猜的没错,你应该升级一下MySQL ODBC Driver,然后再试试。

【热门文章】
【热门文章】