首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

C++Builder6.0中使用memcpy遇到奇怪的有关问题

2013-07-08 
C++Builder6.0中使用memcpy遇到奇怪的问题void AES::Cipher( BYTE* input, BYTE* output,int len){ output

C++Builder6.0中使用memcpy遇到奇怪的问题

void AES::Cipher( BYTE* input, BYTE* output,int len)
{
 output=new BYTE[len];
     BYTE sinput[16];
     BYTE soutput[16];
     for(int i=0;i<len/16;i++)
     {
       memcpy(sinput,input+i*16,16);
       Cipher(sinput,soutput);
       memcpy(output+i*16,soutput,16);
     }
     ShowMessage("!");
     if(len%16!=0)
     {
     memcpy(sinput,input+16*(len/16),len%16);

     for(int i=len%16;i<(16-len%16);i++)
     {
       sinput[i]=0x00;
       Cipher(sinput,soutput);

     }
      memcpy(output+16*(len/16),soutput,16);
     }

}


我传进去的input大小等于len,如len=352;前面的i<11之前的memcpy(output+i*16,soutput,16);都好好的,output大小一直是300多,到i=11的时候突然刷成160!!这是为什么? C++Builder memcpy 动态数组
[解决办法]
void AES::Cipher( BYTE* input, BYTE* output,int len)
{
 output=new BYTE[len];   //------------??有效吗?外面能读取吗?
     BYTE sinput[16];
     BYTE soutput[16];
     for(int i=0;i<len/16;i++)
     {
       memcpy(sinput,input+i*16,16);
       Cipher(sinput,soutput);
       memcpy(output+i*16,soutput,16);
     }
     ShowMessage("!");
     if(len%16!=0)
     {
     memcpy(sinput,input+16*(len/16),len%16);

     for(int i=len%16;i<(16-len%16);i++)
     {
       sinput[i]=0x00;
       Cipher(sinput,soutput);

     }
      memcpy(output+16*(len/16),soutput,16);
     }

}

热点排行