Debug时,显示的字符指针变量信息如下:
 name         value
mydevice      0xcccccccc ""
              CXX0030:Error:expression cannot be evaluated

解决方案 »

  1.   

    在对话框初始化函数中加入了如下代码:PIP_ADAPTER_INFO  pAdapterInfo=NULL;
    DWORD OutBufLen;
    char *devicename;//*dev_description;
    int nIndex=0;
    CComboBox *pComboBox=(CComboBox *)GetDlgItem(IDC_ShowNetcard); GetAdaptersInfo(pAdapterInfo,&OutBufLen);
    pAdapterInfo = (PIP_ADAPTER_INFO)malloc(OutBufLen);
    GetAdaptersInfo(pAdapterInfo, &OutBufLen);
    while(pAdapterInfo)
    {
    devicename = pAdapterInfo->AdapterName;
    //dev_description = pAdapterInfo->Description;
    //strcat(device,dev_description);
    pAdapterInfo = pAdapterInfo->Next; 
    pComboBox->InsertString(nIndex,(LPCTSTR)devicename);
    //device = NULL;
    //dev_description;
    nIndex += 1; }    pComboBox->SetCurSel(0);
      

  2.   

    GetAdaptersInfo(pAdapterInfo,&OutBufLen);OutBufLen==?
      

  3.   

    char * 怎么会是无效的呢?
      

  4.   

    可能是GetAdaptersInfo(pAdapterInfo, &OutBufLen);函数有问题,你检查pAdapterInfo的值了吗?是不是pAdapterInfo->AdapterName本来就为空?不如这样算了:
    while(pAdapterInfo)
    {
    pComboBox->InsertString(nIndex,(LPCTSTR)pAdapterInfo->AdapterName);
    pAdapterInfo = pAdapterInfo->Next; 
    nIndex += 1;
    }
      

  5.   

    pAdapterInfo->AdapterName有值,是正确的。按你说的不行,我以后还要用到devicename这个变量,都赋不了值。
      

  6.   

    那你试试像这个样子:
    devicename=(char *)malloc(sizeof(pAdapterInfo->AdapterName)+1);
    strcpy(devicename,pAdapterInfo->AdapterName);
    当然,内存分配应该在循环外面