使用CRecordSet向数据库添加数据时,随着添加次数的增加,程序内存会不断增长,持续上升而不会下降,不知道是何原因?
CMyRecordset : public CRecordset
{
................................
................................public:
CString m_name;
CLongBinary m_lb;
};CMyRecordset reset;
以下是数据库添加操作的部分代码:try{
//!打开记录集
reset.Open(); //!确认记录集是可追加的
if (!reset.CanAppend())
return; reset.AddNew(); //!设置m_name字段的值
reset.m_name = _T("nihao"); //!设置m_lb字段的值
int nByteSize = 1000; //!<这里随便设的一个字节大小
reset.m_lb.m_dwDataLength = nByteSize ;
reset.m_lb.m_hData = ::GlobalAlloc(GMEM_MOVEABLE, nByteSize);
LPVOID pVoid = ::GlobalLock(reset.m_lb.m_hData);
::memset(pVoid, 1, nByteSize);
::GlobalUnlock(reset.m_lb.m_hData);
SetFieldNull(&reset.m_lb, FALSE);
SetFieldDirty(&reset.m_lb, TRUE); reset.Update(); //!关闭记录集
reset.Close();
}
catch (CException *e)
{
................................
CMyRecordset : public CRecordset
{
................................
................................public:
CString m_name;
CLongBinary m_lb;
};CMyRecordset reset;
以下是数据库添加操作的部分代码:try{
//!打开记录集
reset.Open(); //!确认记录集是可追加的
if (!reset.CanAppend())
return; reset.AddNew(); //!设置m_name字段的值
reset.m_name = _T("nihao"); //!设置m_lb字段的值
int nByteSize = 1000; //!<这里随便设的一个字节大小
reset.m_lb.m_dwDataLength = nByteSize ;
reset.m_lb.m_hData = ::GlobalAlloc(GMEM_MOVEABLE, nByteSize);
LPVOID pVoid = ::GlobalLock(reset.m_lb.m_hData);
::memset(pVoid, 1, nByteSize);
::GlobalUnlock(reset.m_lb.m_hData);
SetFieldNull(&reset.m_lb, FALSE);
SetFieldDirty(&reset.m_lb, TRUE); reset.Update(); //!关闭记录集
reset.Close();
}
catch (CException *e)
{
................................
解决方案 »
- 新手小白问题,,帮个忙看下!
- CWebBrowser2
- 关于客户区的文字输出
- float值与double值相乘,如何输出?
- 如何获取子窗口在父窗口中的位置?
- 总算过软设了,散点分了。。。。
- 自己写的一个ActiveX怎么加入到Web页中,客户在访问这个Web页时也能下载并安装运行吗?怎么实现?请教高手大哥,在线等...
- ---如何用vc给文件加一些自定义属性呢?又如何再把他们读出来呢?--我是vc初学者请各位大虾帮忙了
- =====================虚函数的疑问?===========================
- wes7 与win7 哪个稳定,就是突然断电导致文件丢失,系统起不来
- 如何做一个可以指定初始位置的文件夹选择对话框
- CString是unicode编码时怎样转化成char *
忘了在帖子上写了虽然用了::GlobalFree(reset.m_lb.m_hData);
程序占用的内存也会不断的增长谢谢了
最后我定义了一个全局的实例,每次加入数据的话,就调用addnew(),update()就内存使用就不一直猛涨了我想可能是每次实例CRecordSet对象然后open(),并调用addnew(),update(),可能在栈里开辟了一些内存空间,这些内存空间可能只有在程序结束的时候才能被释放。结果每实例一次添加数据,都会增加内存的使用。谢谢大家了.