0、看到这个问题,第一感觉应该想起是指针没有开辟内存空间或初始化。
1、调用路哥的dll,第一次能成功,第二次就失败了,我特别纳闷,然后就想办法用各种方法重获第一次的成功,结果还是失败了。
2、让路哥一看,他就发现是传进dll中的参数——地址指针 没有被分配内存空间,进而会提示access violation的错误。
错误代码如下:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char szServerIp[20] = "192.168.0.112";
PMACInfo pMacInfo;
if(DLL_NH_GetMACWithServerCheck(szServerIp,pMacInfo))
{
WriteLog("Get LocalMac succeed,LocalMac:%s",pMacInfo->strMac);
}
else{
WriteLog("Get LocalMac fail");
}
}
需要这样分配内存:
PMACInfo pMacInfo = (PMACInfo )malloc(sizeof(MACInfo));并释放
3、看来以后真得好好注意这一点了,在调用自己写的函数和dll中的函数时,一定要注意是否开辟了内存空间,并及时地释放掉了。