我正在使用av_frame_alloc()函数创建AVFrame对象,并使用内部调用av_frame_unref()的av_frame_free(&frame)清除该对象,但无法正确清理内存。我的应用程序的堆大小在运行时呈指数增长。
不起作用:
AVFrame* frame = av_frame_alloc();
av_frame_free(&frame);
工作:
AVFrame* frame = av_frame_alloc();
av_free(frame->data[0]);
据我所知,av_frame_free()调用av_freep(),后者调用av_free()释放动态内存。清除内存,如果我直接使用av_free(frame-> data [0])而不是av_frame_free(&frame)
答案 0 :(得分:0)
我使用libav和H.264开发了一个有关视频屏幕共享应用程序的个人项目,以便进行60 FPS视频编码。
要解决我的内存泄漏问题,我使用frame
分配了av_frame_alloc
,并使其在每个周期都可以使用av_frame_make_writable
进行写操作,并使用av_free
或{{ 1}}。
因此,请使用以下之一:
av_freep