作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正在处理一个 FFmpeg 项目,我必须存储 AVPacket
的数据来自av_read_frame
, 并将数据填充到新的 AVPacket
用于后续解码。
这是我的问题:当我尝试新建和释放 AVPacket
时,内存泄漏总是发生。
我只是在做一个简单的测试:
for(;;) {
AVPacket pkt;
av_new_packet(&pkt, 1000);
av_init_packet(&pkt);
av_free_packet(&pkt);
}
我究竟做错了什么?
最佳答案
av_new_packet
创建一个数据包并分配数据av_init_packet
将所有数据包成员设置为默认值,并将数据指针设置为 NULL
,av_free_packet
清除所有可见成员,但av_init_packet
.如果您想自己处理数据,请在堆栈上分配数据包对象并自己设置数据(并自己释放):
AVPacket pkt;
av_init_packet(&pkt);
pkt.data = dataBuffer;
pkt.size = dataBufferSize;
// use your packet
// free your dataBuffer
关于c++ - 如何新建和删除 AVPacket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25438861/
我是一名优秀的程序员,十分优秀!