以下代码根据我定义 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() 它工作正常。我能理解我做错了什么。有什么帮助吗?