调用dll中函数出现:HEAP[HFDC.exe]: Invalid Address specified to RtlValidateHeap( 01040000, 012C12C0 ) 错误提示!
腌鲜鳜鱼 2008-10-27 01:56:27 我的dll中的输出函数是:
char* MD5_Algorithm(CString Soure)
{
unsigned char szObject[16];
char output1[33];
char output[33]={"\0"};
unsigned int iLen = strlen (Soure);
char szSour[33];
for(int i=0;i<iLen;i++)
{
szSour[i]=Soure.GetAt(i);
}
MD5 context;
CMD5 cmd5;
cmd5.MD5Init(&context);
cmd5.MD5Update(&context, (unsigned char*)szSour, iLen);
cmd5.MD5Final(szObject, &context);
for ( i = 0; i < 16; i++)
{
sprintf(&(output1[2*i]),"%02x",(unsigned char)szObject[i]);
}
for(i=0;i<32;i++)
output[i]=output1[i];
return output;
}
然后我在一个基于mfc的对话框程序中调用:
......
static char cTempUserName[33];
MD5_Algorithm(cTempUserName);
......
通过跟踪,我发现exe程序成功调用dll的函数,并且进行了正确的计算,即:
output中的值是我需要的值,但是一过
......
return output 这句
就提示:Invalid Address specified to RtlValidateHeap( 01040000, 012C12C0 )
请问这时怎么回事?在网上找了很多方法都不行!