次のコードは、newImagesData の定義方法に応じて、seg.fault (以下のコメントを参照) を提供します。配列の場合はすべて問題ありませんが、ポインターとして定義されている場合-障害:(
//Mat newImagesData[FIFO_SIZE]; // Mat is a class from opencv
Mat* newImagesData;
void func1( )
{
...
newImagesData = (Mat*)malloc(FIFO_SIZE * sizeof(Mat)); //if *newImagesData
fifoInit(&newImagesFB, newImagesData, FIFO_SIZE);
...
}
void fifoInit(FIFOBuffer* fifo, Mat* imageData, int size)
{
fifo->data = imageData;
fifo->end = 0;
}
void fifoWrite(FIFOBuffer* fifo, Mat* frame)
{
fifo->data[fifo->end] = *frame; // seg fault with *newImagesData ; OK with newImagesData[]
memcpy(&fifo->data[fifo->end], frame, sizeof(Mat)); // OK with *newImagesData
...
}
memcpy() を使用すると、正常に動作します。私は自分が間違っていることを理解できます。何か助けはありますか?