当我执行以下代码:分段故障
AVFrame tmp = frames_video1[k]; //AVFrame frames_video1[]
AVFrame *avf1 = &tmp;
AVFrameSideData* avfsd1=NULL;
if(avf1->side_data != NULL)
printf("avf1->side_data is not NULL!!...........\n");
avfsd1 = av_frame_get_side_data(avf1, AV_FRAME_DATA_MOTION_VECTORS);
我遇到分段错误来得av_frame_get_side_data(avf1,AV_FRAME_DATA_MOTION_VECTORS)发生了:
avf1->side_data is not NULL!!...........
Segmentation fault (core dumped)
为什么呢?
如果我们提供了[最小,完整,可验证示例](http://stackoverflow.com/help/mcve),这将非常有帮助。然而,看起来frames_video1 [k]可能导致NULL或其他无效值,并且在分配'avf1 =&tmp'之前,您没有检查'tmp == NULL'或做任何其他类型的理智检查。即使它不为null,如果你正在访问超过'frames_video'的边界,你可能会得到垃圾数据而不是空值。 –
frames_video1 [k]不为空,否则就不会有输出“avf1-> side_data不是NULL !! ............” – user273653
或者是tmp。如何在分配avf1 =&tmp时执行完整性检查? – user273653