经过跟踪发现:
_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();
WaitForSingleObject();
#3
多半是数组越界,指针非法或者没有赋初值,指针用完要delete以及置NULL等
#4
AfxBeginThread会创建一个CWiThread对象,删除它了么?
pThread->m_bAutoDelete==?,是否非正常结束的线程?
pThread->m_bAutoDelete==?,是否非正常结束的线程?
#5
a CWinThread object at $00676570, 68 bytes long?
#6
mark
#7
退出线程时最好等线程自己退出。另外线程中有没有分配内存,检查一下。
#8
问题已经找到,结帖!!
#1
这个问题好像被问过好多次了,我觉得是内存越界的问题
#2
退出的时候你要把该线程终止了。
WaitForSingleObject();
WaitForSingleObject();
#3
多半是数组越界,指针非法或者没有赋初值,指针用完要delete以及置NULL等
#4
AfxBeginThread会创建一个CWiThread对象,删除它了么?
pThread->m_bAutoDelete==?,是否非正常结束的线程?
pThread->m_bAutoDelete==?,是否非正常结束的线程?
#5
a CWinThread object at $00676570, 68 bytes long?
#6
mark
#7
退出线程时最好等线程自己退出。另外线程中有没有分配内存,检查一下。
#8
问题已经找到,结帖!!