
时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)
在使用freetds时发现进行频繁的连接,关闭数据库时,出现内存持续增长。在网上搜索了一下,国内的文章就那几篇,和我使用的方法一样。最后在官方网站上找到了原因,所以写出来,供大家参考使用,下面的代码,是从网上找的,红色部分是需要增加的。该示例只执行一次,所以隐藏了内存泄漏的问题。
Freetds的作者说dbinit,dbexit必须执行一次,再测试过程中执行多次也没事。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sybfront.h>
#include <sybdb.h>
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 successn&);
}
if(dbuse(dbprocess, szDBName) == FAIL){
printf(&ASB>> Open database name failn&);
}else{
printf(&ASB>> Open database name successn&);
}
#p#副标题#e#
//查询数据库
dbcmd(dbprocess, &select ID,BeginTime,Description from Alarms&);
if(dbsqlexec(dbprocess) == FAIL){
printf(&ASB>> Query Alarms table errorn&);
}
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=%sn&, szID);
printf(&ASB>> szAid=%sn&, szBeginTime);
printf(&ASB>> szBeginTime=%sn&, szDescription);
}
}
}
//关闭数据库连接
dbclose(dbprocess);
dbloginfree(loginrec);
dbexit();
usleep(1000);
}
return 0;
}
关键词标签:freetds,内存泄漏
相关阅读 安装红帽子RedHat Linux9.0操作系统教程 Tomcat9.0如何安装_Tomcat9.0环境变量配置方法 多种操作系统NTP客户端配置 Linux操作系统修改IP Linux实现SCSI硬盘热插拔及在线识别 Linux下用CDMA modem拨号上网
热门文章
安装红帽子RedHat Linux9.0操作系统教程
Linux服务器:设计高性能网站架构-LLMP
使用Clonezilla迁移到虚拟Linux环境
Linux上的MRTG流量监控中心
Linux 双网卡绑定一个IP原理及实现
linux和windows等系统远程控制ubuntu桌面
人气排行 Linux下获取CPUID、硬盘序列号与MAC地址 dmidecode命令查看内存型号 linux tc实现ip流量限制 安装红帽子RedHat Linux9.0操作系统教程 linux下解压rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 关机、重启、注销 命令 查看linux服务器硬盘IO读写负载 linux命令行浏览器的使用方法 Linux NFS服务固定端口及防火墙配置 U盘安装Ubuntu 10.04 Linux清除用户登录记录和命令历史方法
查看所有0条评论>>