将指针指向的数据复制到另一个指针

时间:2014-02-19 14:25:47

标签: c++ pointers copy

我看过一些类似的问题,但没有解决方案适合我的情况。

我有一个具有不断运行的更新功能的类。此函数有一个unsigned short*参数,其中包含图像的2D数据,每次调用更新时都会有所不同。在开始执行时,我希望将第一帧数据保存在单独的unsigned short*中,并且这些数据必须在所有执行中保持活动状态。

//安装程序在执行开始时运行一次

void Process::setup() 
{
    ...
    _firstFrame = new unsigned short; //_firstFrame is an unsigned short* private variable from the class

    return;
}

void Process::update(unsigned short* frame)
{   
    //-- Performing an initial calculation before any further processing
    if (!_condition)
    {
        //some processing that changes condition to true when criteria is met
        if (condition)
            memcpy(_firstFrame, frame, sizeof(640*480*sizeof(unsigned short)));
                    //each frame has 640*480 dimensions and each element is an unsigned short

        return;
    }

    //further processing using frame
}

现在,_firstFrame应该始终保持来自满足条件后生成的帧的数据,但_firstFrame仅包含零。 有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

您需要一个数组,但始终需要它,因此无需动态分配它。

您还需要将其初始化一次,因此您需要一些方法来跟踪它。目前你(尝试)分配你的第一帧时,你不知道应该进入什么。

class Process {
  bool got_first;
  unsigned short first_frame[640*480];

public:
  Process() : got_first(false) {}

  void update(unsigned short *frame) {
    if (!got_first) {
      memcpy(first_frame, frame, sizeof(first_frame));
      got_first = true;
    }
  }
};