程序一到win7上运行老是报这个错误,但是在有些同样装了win7的电脑上却没有报错。
第一次我单步跟踪到一段读取网卡地址的代码出错,于是我就把那段代码注释掉了。
但是注释掉后,到了另一台装了win7的电脑上,又报这个错误了。
我想知道为什么,有可能由什么引起的,怎么解决
------解决方案--------------------
"程序异常中止" 这样的报错,其他人实在不好猜测是什么原因引起的。如果可行的话,在你的应用中加入日志记录,然后逐条分析吧。
------解决方案--------------------
用这个吧,你上面的代码里面szMac 没有释放吧,这个我测试的win7下也是可以的
- C/C++ code
String GetMac(AnsiString strIPAddr) { String MACStr; ULONG pulMac[2]; ULONG ulLen; HRESULT hr; unsigned int addr; WORD wVersionRequested; WSADATA wsaData; int nErrorNum; wVersionRequested = MAKEWORD(2, 2); nErrorNum = WSAStartup(wVersionRequested, &wsaData); if(nErrorNum != 0) { ShowMessage( "Error! WSAStartup failed!\n "); return " "; } addr = inet_addr((char FAR*)(strIPAddr.c_str())); memset (pulMac, 0xff, sizeof (pulMac)); ulLen = 6; hr = SendARP (addr, 0, pulMac, &ulLen); if(hr == NO_ERROR) { size_t i, j; char *szMac = new char[ulLen*3]; PBYTE pbHexMac = (PBYTE) pulMac; sprintf(szMac,"%02X%02X%02X%02X%02X%02X",pbHexMac[0], pbHexMac[1], pbHexMac[2], pbHexMac[3], pbHexMac[4], pbHexMac[5]); MACStr = String(szMac); delete [] szMac; } WSACleanup(); return MACStr; }