请教高手:使用AfxBeginThread创建线程,为什么在线程退出时会有内存泄漏?

时间:2020-12-25 19:26:34
我做了一个多线程的程序,结果线程退出时总是会出现内存泄露的问题,请各位高手指教:
经过跟踪发现:
_endthreadex(nExitCode); -》ExitThread(retcode);

在ExitThread时出现内存泄漏, 编译器提示如下:(VC7,windowsXP)

线程 '_threadstartex' (0xd0c) 已退出,返回值为 0 (0x0)。
aaa.DLL Terminating!
Detected memory leaks!
Dumping objects ->
{134} normal block at 0x00676A48, 84 bytes long.
 Data: < cB  qe  qe  qe > 20 63 42 00 E8 71 65 00 EE 71 65 00 EF 71 65 00 
thrdcore.cpp(311) : {125} client block at 0x00676570, subtype c0, 68 bytes long.
a CWinThread object at $00676570, 68 bytes long
{124} normal block at 0x006764E8, 72 bytes long.
 Data: <@bB             > 40 62 42 00 00 00 00 00 01 00 00 00 01 00 00 00 
Object dump complete.
线程 'Win32 线程' (0xa34) 已退出,返回值为 0 (0x0)。

8 个解决方案

#1


这个问题好像被问过好多次了,我觉得是内存越界的问题

#2


退出的时候你要把该线程终止了。
WaitForSingleObject();

#3


多半是数组越界,指针非法或者没有赋初值,指针用完要delete以及置NULL等

#4


AfxBeginThread会创建一个CWiThread对象,删除它了么?

pThread->m_bAutoDelete==?,是否非正常结束的线程?

#5


a CWinThread object at $00676570, 68 bytes long?

#6


mark

#7


退出线程时最好等线程自己退出。另外线程中有没有分配内存,检查一下。

#8


问题已经找到,结帖!!

#1


这个问题好像被问过好多次了,我觉得是内存越界的问题

#2


退出的时候你要把该线程终止了。
WaitForSingleObject();

#3


多半是数组越界,指针非法或者没有赋初值,指针用完要delete以及置NULL等

#4


AfxBeginThread会创建一个CWiThread对象,删除它了么?

pThread->m_bAutoDelete==?,是否非正常结束的线程?

#5


a CWinThread object at $00676570, 68 bytes long?

#6


mark

#7


退出线程时最好等线程自己退出。另外线程中有没有分配内存,检查一下。

#8


问题已经找到,结帖!!