在使用freetds时发现进行频繁的连接,关闭数据库时,出现内存持续增长。在网上搜索了一下,国内的文章就那几篇,和我使用的方法一样。最后在官方网站上找到了原因,所以写出来,供大家参考使用,下面的代码,是从网上找的,红色部分是需要增加的。该示例只执行一次,所以隐藏了内存泄漏的问题。
Freetds的作者说dbinit,dbexit必须执行一次,再测试过程中执行多次也没事。
#include
#include
#include
#include
#include
#include
int main(void)
{
while(1)
{
char szUsername[32] = "test";
char szPassword[32] = "test";
char szDBName[32] = "test";
char szServer[32] = "2.2.2.2:1433";
//初始化db-library
dbinit();
//连接数据库
LOGINREC *loginrec = dblogin();
DBSETLUSER(loginrec, szUsername);
DBSETLPWD(loginrec, szPassword);
DBPROCESS *dbprocess = dbopen(loginrec, szServer);
if(dbprocess == FAIL){
printf("ASB>> Conect MS SQL SERVER fail \n");
return 0;
}else{
printf("ASB>> ConnectEMS conect MS SQL SERVER success\n");
}
if(dbuse(dbprocess, szDBName) == FAIL){
printf("ASB>> Open database name fail\n");
}else{
printf("ASB>> Open database name success\n");
}
[1] [2] 下一页