我刚才写程序时遇到了了个奇怪的问题,自己怎么都想不通,于是贴出来向大家请教。我的程序中用到了类似下面的代码:
............
wchar_t    From3[2]={ 0x0000,0xFFFF };
wchar_t    From2[6]={ 0x0074,0x0078,0x0074,0x002E,0x004B,0x004A };
wchar_t    From1[5]={ 0x0049,0x0048,0x0047,0x0046,0x0045 };
wchar_t    *To=new    wchar_t[27];
Copy(From1,To+0,5);            //断点①
Copy(From2,To+0+5,6);          //断点②
Copy(From3,To+0+5+6,2);        //断点③
............
..................
void Copy(wchar_t *DataFrom,wchar_t *DataTo,int NumberOfBytes)
{
    int    i=0;
    while(i<NumberOfBytes)
    {
        printf(" %d ",i);
        *(DataTo+i)=*(DataFrom+i);
        i=i+1;
    }
}结果运行的时的结果如下:
断点①: *(To+0)=0x0049,*(To+1)=0x0048,*(To+2)=0x0047,*(To+3)=0x0046
        *(To+4)=0x0045;
这一步运行正常
断点②: *(To+5)=0x0074,*(To+6)=0x0078,*(To+7)=0x0074,*(To+8)=0x002E
        *(To+9)=0x004B
这一步骤好像比我希望中少COPY了一个元素....
断点③: 数组To[27]中没有任何元素发生改变,不知道程序把From3[2]中的元素COPY到哪去了..........这个错误对我来说有些莫名其妙..搞的我一头雾水...还请大家多多指教
运行环境:VC6.0

解决方案 »

  1.   

    void Copy(wchar_t *DataFrom,wchar_t *DataTo,int NumberOfBytes)
    {
        int    i=0;
        while(i<NumberOfBytes)
        {
            printf(" %d ",i);
            *(DataTo+i)=*(DataFrom+i);
            i=i+1;
        }
    }
    void CCsdndlg23Dlg::OnButton6() 
    {
    wchar_t    From3[2]={ 0x0000,0xFFFF };
    wchar_t    From2[6]={ 0x0074,0x0078,0x0074,0x002E,0x004B,0x004A };
    wchar_t    From1[5]={ 0x0049,0x0048,0x0047,0x0046,0x0045 };
    wchar_t    To[27];
    Copy(From1,To+0,5);            //断点①
    Copy(From2,To+0+5,6);          //断点②
    Copy(From3,To+0+5+6,2);        //断点③


    }
    我试过了,没有问题