你在哪儿 delete(pObj); 了呢?
解决方案 »
- vs2008中如何添加ADO控件?
- 关于多播通信的疑问
- 麻烦您们帮我分析一下读文件代码,谢谢
- VS03怎么用的啊?
- 对文章《基于SPI的数据报过滤原理与实现》里的代码有深刻理解的请进来.
- 看看C++ primer上的代码怎么编译不能通过,请修改一下能使其编译通过。
- 鼠标钩子问题,右键单击变成左键单击
- 推荐一下安装工具
- 我说的对不对??
- virtual void OnDraw( CDC* pDC, const CRect& rcBounds, const CRect& rcInvalid );中的rcInvalid 是干什么用的?
- 是c++有前途还是java呢?
- 大侠门: gethostbyname 能不能访问‘本局网和诸如sina.com.cn等各个网站’以外的机器地址。能的话该如何取。
这样就应该不会内存泄漏了!
你的这个List只是STOREBASE指针的List,也就是说只记录了一个32bit的值。
List不可能去释放它。解决方案:CMapWordToPtr析构前,遍历每个节点,delete它。给分吧!!!!!!!!!!!!!!!!!!!
pSlowSet = new CAutoSlowSet;
if(pSlowSet == NULL)
return FALSE;
我估计在if后面的条件恒为TRUE,直接执行 m_pSet.Open()会好一点,但怎么就调试过去了呢?STOREBASE* pObj = new STOREBASE;
pObj可能也是指向数据库的指针,好象没有Open过。应该有问题。至于内存泄露,这是肯定的,你每做一个循环就new一个,而且没有好好初始化,你的机器估计内存比较大.pObj是局部变量,在while右括号处,他的生命已经结束了,你在while循环外delete一个不存在的变量,肯定出事。
CObject* pObj;
POSITION pos;
for( pos = wtPtr.GetStartPosition(); pos != NULL; )
{
wtPtr.GetNextAssoc( pos, key, (CObject*&)pObj);
delete pObj;
}
if(!m_plstStore->IsEmpty())
{
POSITION pos = m_plstStore->GetStartPosition();
while(pos != NULL)
{
STOREBASE* store;
WORD rKey;
m_plstStore->GetNextAssoc(pos, rKey, (void*&)store);
delete store;
}
m_plstStore->RemoveAll();
}
delete m_plstStore;
但还是内存泄漏,不知为何?
strcore.cpp(76) : {554} normal block at 0x007A78B0, 19 bytes long.
Data: < > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8
strcore.cpp(76) : {553} normal block at 0x007A7860, 43 bytes long.
Data: < c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63
strcore.cpp(76) : {552} normal block at 0x007A7FB0, 27 bytes long.
Data: < 2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31
C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {551} normal block at 0x007A7E30, 36 bytes long.
Data: < z ; ;> 01 00 00 00 BC 7F 7A 00 E0 A7 1E 3B BC 9D 1F 3B
strcore.cpp(76) : {542} normal block at 0x007A7DB0, 19 bytes long.
Data: < > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8
strcore.cpp(76) : {541} normal block at 0x007A79F0, 43 bytes long.
Data: < c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63
strcore.cpp(76) : {540} normal block at 0x007A79B0, 27 bytes long.
Data: < 2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31
C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {539} normal block at 0x007A7960, 36 bytes long.
Data: < yz ; ;> 02 00 00 00 BC 79 7A 00 E0 A7 1E 3B F0 96 1F 3B
strcore.cpp(76) : {530} normal block at 0x007A7D70, 19 bytes long.
Data: < > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8
strcore.cpp(76) : {529} normal block at 0x007A7D20, 43 bytes long.
Data: < c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63
strcore.cpp(76) : {528} normal block at 0x007A7CE0, 27 bytes long.
Data: < 2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31
C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {527} normal block at 0x007A7C90, 36 bytes long.
Data: < |z ; ;> 03 00 00 00 EC 7C 7A 00 E0 A7 1E 3B E0 88 1F 3B
strcore.cpp(76) : {518} normal block at 0x007A7F70, 19 bytes long.
Data: < > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8
strcore.cpp(76) : {517} normal block at 0x007A7F20, 43 bytes long.
Data: < c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63
strcore.cpp(76) : {516} normal block at 0x007A7EE0, 27 bytes long.
Data: < 2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31
C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {515} normal block at 0x007A7E90, 36 bytes long.
Data: < ~z ; ;> 04 00 00 00 EC 7E 7A 00 D0 99 1E 3B E0 A7 1E 3B
strcore.cpp(76) : {506} normal block at 0x007A7C50, 19 bytes long.
Data: < > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8
strcore.cpp(76) : {505} normal block at 0x007A7C00, 43 bytes long.
Data: < c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63
strcore.cpp(76) : {504} normal block at 0x007A7BC0, 27 bytes long.
Data: < 2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31
C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {503} normal block at 0x007A7B70, 36 bytes long.
Data: < {z ; ;> 05 00 00 00 CC 7B 7A 00 E0 A7 1E 3B E8 8F 1F 3B
strcore.cpp(76) : {492} normal block at 0x007A7820, 19 bytes long.
Data: < > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8
strcore.cpp(76) : {491} normal block at 0x007A77D0, 43 bytes long.
Data: < c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63
strcore.cpp(76) : {490} normal block at 0x007A7790, 27 bytes long.
Data: < 2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31
C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {489} normal block at 0x007A7740, 36 bytes long.
Data: < wz ; ;> 06 00 00 00 9C 77 7A 00 D0 99 1E 3B E0 A7 1E 3B why?????????????
if(!m_plstStore->IsEmpty())
{
POSITION pos = m_plstStore->GetStartPosition();
while(pos != NULL)
{
STOREBASE* store;
WORD rKey;
m_plstStore->GetNextAssoc(pos, rKey, (void*&)store);
delete store;
}
m_plstStore->RemoveAll();
}
delete m_plstStore;
我个人认为:阁下编程习惯有问题。
delete次数和new的次数一样。
我认为这样会稍好一点。
STOREBASE* pObj = new STOREBASE;
pObj->Open();
while(!pSlowSet->IsEOF())
{
// ..................
}
pObj->Close();
delete pObj;如果用try,catch,throw更好
有道理
#define _MYDEFINE_H_typedef struct tagStore{
long nIndex; //索引
CString strTheme; //主题
CTime StartTime; //开始时间
CTime EndTime; //结束时间
CString strFileName; //文件路径
long nTdh; //通道号
CString tdhMs; //通道号描述
BOOL isDel; //是否删除
CString strweek;
//BOOL bDs; //是否定时
}STOREBASE;#endif
ahphone(《风云3》里头劫镖的) 说法有道理!
对不起,我一直用STL,没用过CMapWordToPtr。
按《ahphone(《风云3》里头劫镖的)》的做应该没问题。