В ffmpeg есть функция для освобождения ресурсов:
void av_freep(void *arg)
{
void *val;
memcpy(&val, arg, sizeof(val));
memcpy(arg, &(void *){ NULL }, sizeof(val));
av_free(val);
}
Теперь я получаю SIGSEGV в первой строке memcpy.
arg
кажется правильным указателем (в по крайней мере, это не NULL).
Я называю это как av_freep(&mOutputFormatCtx->pb);
Этот pb
был создан avio_alloc_context
, однако я вызываю av_freep после источника потока RTSP стал недействительным (камера выключена).
Как я могу избежать этого SIGSEGV? Хотя адрес arg кажется хорошим, отладчик говорит мне: «Не удается получить доступ к памяти по адресу 0xabcdef», если я пытаюсь посмотреть mOutputFormatCtx->pb
.