一个困惑的问题?

guoxiny 2003-05-13 12:27:42
我有一个线程,在刚开始时在堆上进行了内存分配,在还没有释放这个内存时,我挂起了线程,并且不再启动它;这个时候退出程序是否会出现内存遗漏?如果会内存遗漏,我应该如何释放这块内存,应为分配只在线程中进行?
...全文
45 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamrstboy 2003-05-14
  • 打赏
  • 举报
回复
I think there is no memory leak...if you alloc memory in the program heap,
guoxiny 2003-05-14
  • 打赏
  • 举报
回复
有点矛盾呀,怎么有的人说会有遗漏,有的人说没有遗漏,大家知不知道有什么多线程的书的呀?
binjuny 2003-05-13
  • 打赏
  • 举报
回复
NewFree 2003-05-13
  • 打赏
  • 举报
回复
操作系统是会为你释放所有的内存,但好的习惯是“谁分配,谁管理”,所以我觉得还是自己释放内存
lblyy76 2003-05-13
  • 打赏
  • 举报
回复
对于指向内存的指针,指针分配后初始化NULL,释放后NULL就可以了。
everandforever 2003-05-13
  • 打赏
  • 举报
回复
这个时候退出程序是否会出现内存遗漏?
________________
不会. 系统会为你释放所有的内存, CLOSE 所有的 HANDLE, 释放所有的资源.
zhang865 2003-05-13
  • 打赏
  • 举报
回复
在挂起线程的地方把内存释放了
lblyy76 2003-05-13
  • 打赏
  • 举报
回复
CloseHandle
loopyifly 2003-05-13
  • 打赏
  • 举报
回复
在挂起线程的地方把内存释放了

loopyifly 2003-05-13
  • 打赏
  • 举报
回复
up
NewFree 2003-05-13
  • 打赏
  • 举报
回复
会内存遗漏,可用如下方法:
(1)主线程初始化时:
HANDLE m_hKillEvent2;
BOOL bChildThreadExit = FALSE;
m_hKillEvent2 = CreateEvent(NULL,FALSE,FALSE,NULL);

(1)退出程序时,例如
OnDestroy()
{
。。。
SetEvent(m_hKillEvent2);
Sleep(2000);
CloseHandle(m_hKillEvent2);

While(!bChildThreadExit)
{
Sleep(1000);
}
。。。
}

(2)YourThread.Resume();
(3)
UINT YourThread(LPVOID lpParam)
{
。。。CMainFrame *pMainFrm=(CMainFrame *)lpParam;
while(1)
{
if( WaitForSingleObject(pMainFrm->m_hKillEvent2, 2000)
== WAIT_OBJECT_0 )
{
//...do job to release your heap mem
pMainFrm->m_bChildThreadExit = TRUE;
break;
}
。。。
}
return 1;
}
guoxiny 2003-05-13
  • 打赏
  • 举报
回复
会出现遗漏的话,那应该如何解决这个问题?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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