搜索到以下东西
When I execute my program (it's multithread and has COM and dll),there is an error message as follows:Program D:/dongle_1/TestAP/bin/Debug/TestAP.exeFile: dbgheap.cLine: 1132Expression: _CrtIsValidHeapPointer(pUserData)For information on how your program can cause an assertion failure, seethe Visual C++ documentation on asserts.==================================================I read the dbgheap.c and find the line 1132, it's as follows:/** If this ASSERT fails, a bad pointer has been passed in. Itmay be* totally bogus, or it may have been allocated from anotherheap.* The pointer MUST come from the 'local' heap.*/1132: _ASSERTE(_CrtIsValidHeapPointer(pUserData));=============================================================I also usegoogle to find some answers.They said(1) If you are developing multithread application, be sure to link itwiththe correct runtime library(/MD, /MT). That what"The pointer MUST come from the 'local' heap." means.Check what "ruintime library" you use. It should be "Multi threaded (debug ) DLL"Roman(2)Not only must they match, they must both be DLL versions. If they'restatic versions, each piece (the exe and the dll) will have their ownheap and the OP will still be deleting from mismatched heaps.I'd also be suspicious of general design issues given the way the OP'smain program is having to clean up for the dll.You'll get this problem if you use two different run-time libraries,one toallocate the memory and one to de-allocate the memory. Open up theprojectsettings dialog, switch to C/C++ tab, set Category to Code Generationandcheck the Use run-time library combo box. These must match in anymodulesthat share the task of allocating and destroying memory.--Randy Charles MorinAuthor of Programming Windows Serviceshttp://www.kbcafe.com=====================================================If necessary, my dirty code is as follows (Please read from the bottomup)http://irc.csie.org:8888/125Thanks in advance .-jiing-
打开你的项目配置对话框,找到C/C++ ---> 代码生成
选择多线程调试dll
把所有的工程都设为多线程调试dll