//ADAPTER_INFO * pAapterInfo = NULL;
ADAPTER_INFO AdapterInfo;
memset(&AdapterInfo, 0, sizeof(ADAPTER_INFO));//iReturnCode = pfnMegaLibCommand(sizeof(ADAPTER_INFO), pAapterInfo);
int iReturnCode = pfnMegaLibCommand(sizeof(ADAPTER_INFO), &AdapterInfo);//cout<< "BIOSVER=" << pAapterInfo->BiosVersion << '\n';
cout<< "BIOSVER=" << AdapterInfo.BiosVersion << '\n';为什么注释掉的代码不能得到正确答案呢?
其中pfnMegaLibCommand函数的参数定义是:
Input:
Param1 – sizeof ADAPTER_INFO
Param2 – This variable will contain the adapter information after the function will return.Output:
Param2 will contain the adapter information.Returns:
0 on Success
Error Code on Failure

解决方案 »

  1.   

    不是memset的问题,你的第一个根本没有申请空间啊。
      

  2.   

    //ADAPTER_INFO * pAapterInfo = NULL;后面你没有给它分配空间
      

  3.   

    你可以这么写:ADAPTER_INFO * pAapterInfo = new ADAPTER_INFO;
    memset(pAdapterInfo, 0, sizeof(ADAPTER_INFO));
    ……
    delete pAdapterInfo;
      

  4.   

    memset是初始化内存块。
    那么你这个pfnMegaLibCommand的功能是什么呢?你只说参数,函数的功能和参数有多大关系呢
      

  5.   

    ADAPTER_INFO * pAapterInfo = new ADAPTER_INFO;
    .
    .
    .
    delete pAapterInfo;
      

  6.   

    谢谢各位了,我还想问一下。如果用
    ADAPTER_INFO AdapterInfo;
    memset(&AdapterInfo, 0, sizeof(ADAPTER_INFO));以后还需要delete &AdapterInfo吗?
      

  7.   

    ADAPTER_INFO AdapterInfo;
    memset(&AdapterInfo, 0, sizeof(ADAPTER_INFO));
    是在栈上分配为变量分配内存空间,可以自己释放new 是在堆上为变量分配内存空间,得用delete 释放应该是这样吧
      

  8.   

    ADAPTER_INFO AdapterInfo;定义方式不是在动态区间分配空间,所以在变量生命期结束后,系统会自动回收。不用delete
      

  9.   

    new 和 delete 必须配对使用,就像malloc 和 free一样,切记!!
    memset只是对你申请的空间进行初始化,并不实现申请空间.