急!

huaxu2002 2006-05-29 08:57:40
帮我看看下面的代码,一个是销毁,一个是清空。销毁可以释放内存,但是清空却引起内存泄漏.另外销毁的时候,出现下面的内存泄漏情况:
Detected memory leaks!
Dumping objects ->
c:\program files\microsoft visual studio\vc98\include\crtdbg.h(552) : {945} normal block at 0x01258EA0, 65536 bytes long.
Data: <8 > 38 0D 00 00 08 00 00 00 05 00 04 00 A0 D7 89 81
Object dump complete.

/*
功能:销毁进程信息链表
参数:pProcess->进程信息链表结构
返回值:
*/
void CProcessControl::DestroyAppProcess(pAppProcess &pProcess)
{

pAppProcess p;
pAppThread q;
pAppModule s;
while (pProcess)
{
while (pProcess->pThread) //销毁进程创建的线程
{
q = pProcess->pThread->pThreadNext;
free(pProcess->pThread);
pProcess->pThread = q;
}
while (pProcess->pModule) //销毁进程所拥有的模块
{
s = pProcess->pModule->pModuleNext;
free(pProcess->pModule);
pProcess->pModule =s;
}
while (pProcess->pTime) //销毁进程创建时间
{
free(pProcess->pTime);
pProcess->pTime = NULL;
}
while (pProcess->pPort)
{
free(pProcess->pPort);//此处注意:如果不添加,则引起内存泄漏,若添加,程序则过不去
pProcess->pPort = NULL;
}

p = pProcess->pProcessNext;
free(pProcess);
pProcess = p;
}
}
/*
功能:清空进程信息链表
参数:pProcess->进程信息链表结构
返回值:
*/
BOOL CProcessControl::ClearAppProcess(pAppProcess pProcess)
{
pAppProcess p, q;
p = pProcess->pProcessNext;
pAppThread pThread1, pThread2;
pThread1 = p->pThread;
pAppModule pModule1, pModule2;
pModule1 = p->pModule;
while(p)
{
q = p->pProcessNext;
while (pThread1) //由于pThread和pModule都是pProcess->pProcessNext这个结点生成的,所以
{ //pThread和pModule都要销毁
pThread2 = pThread1->pThreadNext;
free(pThread1);
pThread1 = pThread2;
}
while (pModule1)
{
pModule2 = pModule1->pModuleNext;
free(pModule1);
pModule1 = pModule2;
}

free(p->pTime);
free(p->pPort);
p->pModule = NULL;
p->pThread = NULL;
p->pTime = NULL;
p->pPort = NULL;
free(p);
p = q;
}
pProcess->pProcessNext = NULL;
return true;
}
...全文
85 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
最近有人说下不了,我看了一下,能下载,多尝试几次~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 找来一个很有用的声卡驱动解决方案,是我尝试了n次(不下20)还搭上某人的辛苦劳动,才成功让我的Win7发出声音的!!!以下是引用本站“实话实说”的博客。。。 你看到这篇文章时候估计你快被windows7无法安装声卡驱动而崩溃了,呵呵,别,这篇文章是你的救星,本人已经试验多台电脑,完美解决windows7声卡驱动安装失败这一问题 有个前提,你已经有适合自己机子声卡驱动就是总是安装失败,若没有声卡驱动可以用驱动人生(或者其他驱动检测设备)检测并下载适合自己的驱动以备下一步使用。 闲话少说,正文: 1.先下载解压 windows7声卡驱动修复 压缩包。 2.打开你系统的所在盘进入Windows-system32-Driverstore-FileRepository在里面找到wdmaudio.inf_x86_neutral_aed2a4456700dfde文件夹. 一个一个慢慢找吧别着. 4.再进入(wdmaudio.inf_x86_neutral_aed2a4456700dfde)文件夹把里面的东西全删了(删不掉,因为需要管理员权限 ,用windows7 优化大师 -->系统设置--->又键设置--->获取管理员权限(文件\文件夹)--应用到系统,然后对删不掉的文件点右键 --获取管理员权限---删除) 5.回到你刚刚解压的文件夹 6.把里面文件全部复制粘贴到wdmaudio.inf……文件夹里面 7.重新安装声卡驱动. 8.重启ok 问题解决了 如果没有WIN7驱动程序,用vista的也可以

18,358

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧