就执行了这两句:
int i;
HSZ hszItem = DdeCreateStringHandle(idInst, citemname, 0);
i=DdeFreeStringHandle(idInst, hszItem);
返回值为1,但是内存并没有释放掉,每执行一次就会吃掉一些内存..
为什么?
int i;
HSZ hszItem = DdeCreateStringHandle(idInst, citemname, 0);
i=DdeFreeStringHandle(idInst, hszItem);
返回值为1,但是内存并没有释放掉,每执行一次就会吃掉一些内存..
为什么?
if (!hszItem)
{ 出错
}DdeInitialize
DdeUninitialize
是否调用了
int i;
HSZ hszItem = DdeCreateStringHandle(idInst, citemname, 0);
if (!hszItem)
{AfxMessageBox("Error!"); //根本就不会执行到这里
}
i=DdeFreeStringHandle(idInst, hszItem);
仍旧
for(int i=0; i<10000; i++)
{
DWORD idInst = 0;
if(DdeInitialize(&idInst,NULL,APPCMD_CLIENTONLY,0)!= DMLERR_NO_ERROR)
{
::MessageBox( 0,"Initialization failed.", "DDEML Client",
MB_ICONSTOP|MB_TASKMODAL);
return;
}
int i; DWORD cb;
HSZ hszItem = DdeCreateStringHandle(idInst, "GroupWise", CP_WINANSI);
if (!hszItem)
{
AfxMessageBox("Error!");
}
i=DdeFreeStringHandle(idInst, hszItem);
DdeUninitialize(idInst);
}
运行是一直保持连接
DWORD idInst = 0;
if(DdeInitialize(&idInst,NULL,APPCMD_CLIENTONLY,0)!= DMLERR_NO_ERROR)
{
::MessageBox( 0,"Initialization failed.", "DDEML Client",
MB_ICONSTOP|MB_TASKMODAL);
return;
}for(int i=0; i<1000; i++)
{
DWORD cb;
HSZ hszItem = DdeCreateStringHandle(idInst, "GroupWise", CP_WINANSI);
if (!hszItem)
{
AfxMessageBox("Error!"); //根本就不会执行到这里
}
i=DdeFreeStringHandle(idInst, hszItem);
}
DdeUninitialize(idInst);
我的程序还有DdeConnect的过程
但问题肯定是出在我说的地方
问题解决后一定另开贴给分
DWORD idInst = 0;
if(DdeInitialize(&idInst,NULL,APPCMD_CLIENTONLY,0)!= DMLERR_NO_ERROR)
{
::MessageBox( 0,"Initialization failed.", "DDEML Client",
MB_ICONSTOP|MB_TASKMODAL);
return;
}for(int i=0; i<1000; i++)
{
HSZ hszItem = DdeCreateStringHandle(idInst, "GroupWise", CP_WINANSI);
if (!hszItem)
{
AfxMessageBox("Error!"); //根本就不会执行到这里
}
DdeFreeStringHandle(idInst, hszItem);
}
DdeUninitialize(idInst);
为了监视运行选中了 DDESpy -> Monitor -> Posted DDE Message
运行ddespy后退出ddespy都不行
之后再怎么用就都是泄漏的了
怎么解决?
msdn中给的的例子都会出现内存不断增长的情况