int**m_NumList = (int **)(pData);//经过地铁索引

for(i = 0; i < nCount; i++)
{
int nPos = (int)(m_NumList[i]); if(nPos != -1)
{ //tmpInfo是另外一个定义好的数组
m_NumList[i] = (int*)((int*)tmpInfo + nPos);
}
}
这段代码在win32下运行正确,但是为啥在x64下运行通不过呢?该如何修改使得在x86,x64都能运行,求高人给点意见,谢谢!

解决方案 »

  1.   

    m_NumList[i]是指针,不能转int。。
      

  2.   

    修改成如下形式,为啥也不行呢?   int**m_NumList = (int **)(pData);//经过地铁索引
      int*m_ptmpNumList = (int *)(pData);//经过地铁索引
        
        for(i = 0; i < nCount; i++)
        {
            int nPos = m_ptmpNumList[i];            if(nPos != -1)
            {    //tmpInfo是另外一个定义好的数组        
                m_NumList[i] = (int*)((int*)tmpInfo + nPos);    
            }    
        }
      

  3.   

    可参考http://blog.csdn.net/harbinzju/article/details/5785024
    正如文中所说Windows上的32位程序设计和64位程序设计最大的不同(也就是IP32和LLP64的不同),就在于指针的长度不同由32位变成了64位
      

  4.   

    int和int指针混用,混乱不堪的代码,这是地铁控制程序?难怪动车要撞车。
      

  5.   

    int**m_NumList = (int **)(pData);//经过地铁索引
        
        for(i = 0; i < nCount; i++)
        {
            size_t nPos = (size_t)(m_NumList[i]);            if(nPos != (size_t)-1)
            {    //tmpInfo是另外一个定义好的数组        
                m_NumList[i] = ((int*)tmpInfo + nPos);    
            }    
        }