我看过一些类似的问题,但没有解决方案适合我的情况。
我有一个具有不断运行的更新功能的类。此函数有一个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仅包含零。 有什么帮助吗?
答案 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;
}
}
};