前几天写了一个dll,可以导出对话框
在另外一个工程里使用此dll时,运行一切正常
退出时,VC提示有内存泄露
{483} client block at 0x003A87B0, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $003A87B0, 64 bytes long
a CDynLinkLibrary object at $003A87B0, 64 bytes long
f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/strcore.cpp(141) : {478} normal block at 0x003A8628, 22 bytes long.
Data: <<N x > 3C 4E A4 78 05 00 00 00 05 00 00 00 01 00 00 00
f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/strcore.cpp(141) : {477} normal block at 0x003A85D0, 22 bytes long.
Data: <<N x > 3C 4E A4 78 05 00 00 00 05 00 00 00 01 00 00 00
f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/strcore.cpp(141) : {476} normal block at 0x003A8570, 34 bytes long.
Data: <<N x > 3C 4E A4 78 11 00 00 00 11 00 00 00 01 00 00 00
f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/strcore.cpp(141) : {475} normal block at 0x003A8518, 28 bytes long.
Data: <<N x > 3C 4E A4 78 0B 00 00 00 0B 00 00 00 01 00 00 00
f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/strcore.cpp(141) : {474} normal block at 0x003A84C0, 24 bytes long.
Data: <<N x > 3C 4E A4 78 07 00 00 00 07 00 00 00 01 00 00 00
f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/strcore.cpp(141) : {473} normal block at 0x003A8468, 22 bytes long.
只能看出来和字符串有关,上网找了半天也没找到答案
后来无意中发现dll的字符集和exe工程的字符集不一致,一个是多字节的(Multibyte),另一个是Unicode的。
调整一致后,发现内存泄露提示没有了。