所以我创建像
这样的缓冲区unsigned char *pb_buffer;
我用一些较旧的din缓冲区中的一些ffmpeg数据填充它
int len = url_close_dyn_buf(pFormatContext -> pb, (unsigned char **)(&pb_buffer));
我用这些数据做了一些事情
现在我要删除我的那个缓冲区。要做这样的事吗?
我试过free(&pb_buffer);
应用程序死了......然后带我进入一些C ++文档,我没有得到...
我试过delete[] pb_buffer;
os杀了我的应用......
答案 0 :(得分:3)
答案 1 :(得分:1)
unsigned char *pb_buffer
不创建缓冲区,它会创建一个指针,该指针最初不指向任何东西。它是对url_close_dyn_buf
的调用,它分配缓冲区,并在第二个参数指定的位置存储指向它的指针。
url_close_dyn_buf
的文档应告诉您如何释放它。文档有点粗略,但av_free(pb_buffer)
就是答案。 av_free
的文档建议使用av_freep(&pb_buffer)
:它执行相同的操作,然后将pb_buffer
设置为0。