奇怪的内存释放问题,用free时出错,请大家帮看看!请斑竹看看,有点急!
在DLL中有下面的一个输出函数:
它的作用是把输入的ANSI型的字符串转化为Unicode型然后调用一个
unicode型字符串处理函数进行处理,并返回处理结果。
在执行调试时,发现执行到free一句时出现意外错误!
想了一会没搞懂,我初步估计是MultiByteToWideChar寒数搞的鬼,因为
跟踪执行时,发现在执行它后,pWideStr指向中的值有变化。
但不知什么原因,请大伙帮看看。
EXPORT BOOL CALLBACK AddStringA (PCSTR pStringIn)
{
BOOL bReturn ;
int iLength ;
PWSTR pWideStr ;
// Convert string to Unicode and call AddStringW
iLength = MultiByteToWideChar (CP_ACP, 0, pStringIn, -1, NULL, 0) ;
pWideStr = (PWSTR)malloc (iLength);//申请一个空间用于放下面转化为unicode后的字符
MultiByteToWideChar (CP_ACP, 0, pStringIn, -1, pWideStr, iLength);
bReturn = AddStringW (pWideStr) ; //调用标准的Unicode处理函数
此函数对pWideStr不做任何改写,只是引用它的值
free (pWideStr);//执行到此句时出错!!!!
return bReturn ;
}
多谢!!!如何解决?