gpt4 book ai didi

ffmpeg - 简单的 ffmpeg 程序有内存泄漏

转载 作者:行者123 更新时间:2023-12-04 23:05:33 70 4
gpt4 key购买 nike

环境:Ubuntu 14.04

我从 http://dranger.com/ffmpeg/tutorial01.html 的 ffmpeg 教程步骤 1 编译了简单的源代码.当我通过 valgrind 运行二进制文件时,它报告了一堆内存泄漏。这是一个例子:

==30270== 389,824 bytes in 1 blocks are possibly lost in loss record 8 of 8
==30270== at 0x4C2D110: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==30270== by 0x4C2D227: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==30270== by 0x9AEDAD: av_malloc (mem.c:81)
==30270== by 0x9AEEFD: av_mallocz (mem.c:207)
==30270== by 0x74E70F: avcodec_get_context_defaults3 (options.c:102)i
==30270== by 0x74E775: avcodec_alloc_context3 (options.c:130)
==30270== by 0x449737: main (test1.cpp:106)

以下是第 106 行 test1.cpp 的片段:
 pCodecCtx = avcodec_alloc_context3(pCodec);
if(avcodec_copy_context(pCodecCtx, pCodecCtxOrig) != 0) {
fprintf(stderr, "Couldn't copy codec context");
return -1; // Error copying codec context
}

在 main 函数返回之前,它确实关闭了上下文:
 avcodec_close(pCodecCtx);
avcodec_close(pCodecCtxOrig);
...
return 0;

是否需要做其他事情来确保适当的内存释放?

对于那些感兴趣的人,可以从我提到的链接下载源文件。问候。

最佳答案

来自 docs关于 avcodec_alloc_context3

The resulting struct should be freed with avcodec_free_context().



添加 avcodec_free_context(&pCodecCtx);看看它是否适合你。

关于ffmpeg - 简单的 ffmpeg 程序有内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30332202/

70 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com