當我執行以下代碼:分段故障
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