c ++无符号字符内存副本

问题描述 投票:-2回答:1

我需要将一个无符号字符数组从一种方法传递给另一种,而我尝试使用此代码:

{
     unsigned char *lpBuffer = new unsigned char[182];
 ReceiveSystemState(lpBuffer);

}

BOOL ReceiveSystemState(unsigned char *lpBuffer)
  {
      unsigned char strRecvBuffer[182] = { 0 };
      //strRecvBuffer construction

      memcpy(lpBuffer, strRecvBuffer, sizeof(strRecvBuffer));

      return TRUE;
 }

[这3种方法(在ReceiveSystemState中使用)均未达到我的预期。使用完每个副本后,所有要复制的内容就是strRecvBuffer中的第一个字符,仅此而已。 strRecvBuffer的每个元素之间都有空字符,但我仍然需要它们,因为该字符串是来自硬件设备的消息,并且该消息将使用协议进行分析。我在这里想念什么?我是否初始化lpBuffer错误?

编辑:我使用了简单的memcpy方法来完成这项工作。仍然是相同的结果:它复制的全部是strRecvBuffer的第一个字符。

EDIT2:工作代码:

{
     unsigned char *lpBuffer = new unsigned char[182];
     ReceiveSystemState(lpBuffer);
     for (int i = 0; i < 144; i++)
     {
         memcpy(&c_dateKG[i], lpBuffer + i * sizeof(unsigned char), sizeof(unsigned char) );
     }

}    
  BOOL ReceiveSystemState(unsigned char *lpBuffer)
  {
     unsigned char strRecvBuffer[182] = { 0 };
     //strRecvBuffer construction

     memcpy(lpBuffer, strRecvBuffer, sizeof(strRecvBuffer));

     return TRUE;
  }

我需要将一个无符号字符数组从一个方法传递给另一个方法,我尝试使用以下代码:{unsigned char * lpBuffer = new unsigned char [182]; ReceiveSystemState(lpBuffer); } BOOL ...

c++ arrays unsigned-char
1个回答
7
投票

您的代码绝对是垃圾。一些注意事项:

© www.soinside.com 2019 - 2024. All rights reserved.