首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

ADOTable操作mysql时发现占用内存一直增加,这是咋回事

2013-06-25 
ADOTable操作mysql时发现占用内存一直增加,这是怎么回事?本人写了一个程序,通过ADO + mysql操作数据库,发

ADOTable操作mysql时发现占用内存一直增加,这是怎么回事?
本人写了一个程序,通过ADO + mysql操作数据库,发现内存泄露,而这个内存泄露的原因竟然是执行了新增记录的操作。
以下是源码:
ADOTable->Append();
ADOTable->FieldByName("coder")->Value = coder;
ADOTable->FieldByName("medno")->Value = medno;
ADOTable->FieldByName("review_time")->Value = review_time;
ADOTable->FieldByName("hr")->Value = hr;
ADOTable->FieldByName("pvc")->Value = pvc;
ADOTable->FieldByName("st1")->Value = st1;
ADOTable->FieldByName("st2")->Value = st2;
ADOTable->FieldByName("resever")->Value = resever;
ADOTable->Post();
因为这段代码是每秒执行的,导致内存不断被占用,最终崩溃,只是我不明白的是,我并没有申请内存的代码,这内存的占用是怎么回事。
PS: ADOTable->Active = true;是在程序一开始就执行的,执行新增记录的操作中ADOTable数据集是没有关闭的。
[解决办法]
ADOTable指的是这个表的全部记录,当表数据量越来越多,自然内存占用就多,建议换成
adoquery,用insert sql语句的方式插入数据。

如果需要查看数据的话,也可以用adoquery的select 语句加where条件,只显示部分记录。这样数据少,速度快,内存占用自然降低了。

热点排行