時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(1)
在使用freetds時(shí)發(fā)現(xiàn)進(jìn)行頻繁的連接,關(guān)閉數(shù)據(jù)庫時(shí),出現(xiàn)內(nèi)存持續(xù)增長。在網(wǎng)上搜索了一下,國內(nèi)的文章就那幾篇,和我使用的方法一樣。最后在官方網(wǎng)站上找到了原因,所以寫出來,供大家參考使用,下面的代碼,是從網(wǎng)上找的,紅色部分是需要增加的。該示例只執(zhí)行一次,所以隱藏了內(nèi)存泄漏的問題。
Freetds的作者說dbinit,dbexit必須執(zhí)行一次,再測試過程中執(zhí)行多次也沒事。
#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();
//連接數(shù)據(jù)庫
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");
}
#p#副標(biāo)題#e#
//查詢數(shù)據(jù)庫
dbcmd(dbprocess, "select ID,BeginTime,Description from Alarms");
if(dbsqlexec(dbprocess) == FAIL){
printf("ASB>>????? Query Alarms table error\n");
}
DBINT result_code;
char szID[1024];
char szBeginTime[1024];
char szDescription[1024];
int rows = 0;
while ((result_code = dbresults(dbprocess)) != NO_MORE_RESULTS){
if (result_code == SUCCEED){
dbbind(dbprocess, 1, CHARBIND, (DBINT)0, (BYTE*)szID);
dbbind(dbprocess, 2, CHARBIND, (DBCHAR)0, (BYTE*)szBeginTime);
dbbind(dbprocess, 3, CHARBIND, (DBCHAR)0, (BYTE*)szDescription);
while (dbnextrow(dbprocess) != NO_MORE_ROWS){
printf("ASB>> ID=%s\n", szID);
printf("ASB>> szAid=%s\n", szBeginTime);
printf("ASB>> szBeginTime=%s\n", szDescription);
}
}
}
//關(guān)閉數(shù)據(jù)庫連接
dbclose(dbprocess);
dbloginfree(loginrec);
dbexit();
usleep(1000);
}
return 0;
}
關(guān)鍵詞標(biāo)簽:freetds,內(nèi)存泄漏
相關(guān)閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP
人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址 dmidecode命令查看內(nèi)存型號 linux tc實(shí)現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令 查看linux服務(wù)器硬盤IO讀寫負(fù)載