1、出现这个问题,很明显是是内存分配有问题。
2、和 正确的代码 一对比,才发现是 以下这部分代码 出问题了
ULONG ulOutLen ;
IP_ADAPTER_INFO *pIpAdapterInfo = ( IP_ADAPTER_INFO * )malloc( sizeof(IP_ADAPTER_INFO) );
if ( pIpAdapterInfo == NULL )
{
printf("GetMac.cpp main IP_ADAPTER_INFO first malloc failed!");
dwReturn = 1;
goto exit;
}
dwResult = GetAdaptersInfo( pIpAdapterInfo, &ulOutLen );
3、问题主要是由于我 没有仔细看 msdn开发文档引起的。文档上说“specifies the size of the buffer pointed
to by the pAdapterInfo parameter”,而我忘记了给GetAdaptersInfo的第二个参数赋值,因此,系统会在读取GetAdaptersInfo的第一个参数的内存
buffer 时 出错。
4、定义GetAdaptersInfo的第二个实参时应该这样定义ULONG ulOutLen = sizeof( IP_ADAPTER_INFO);

本文探讨了在使用GetAdaptersInfo函数时遇到的错误,即第二个参数未正确赋值,这导致了GetMac.exe程序停止工作。通过对比正确代码,发现问题出在对ULONG ulOutLen变量的初始化上,正确的做法是将其设置为sizeof(IP_ADAPTER_INFO)。
984

被折叠的 条评论
为什么被折叠?



