Rella
Rella

Reputation: 66945

How to remove buffer created in such way?

So I create buffer like

unsigned char *pb_buffer;

I fill it with some ffmpeg data from some older din buffer

    int len = url_close_dyn_buf(pFormatContext -> pb, (unsigned char **)(&pb_buffer));

I do some stuff with that data

Now I want to delete that buffer of mine. ow to do such thing?

I tried free(&pb_buffer); app dies... and brings me into some C++ doc I do not get...

I tried delete[] pb_buffer; os kills my app...

Upvotes: 0

Views: 495

Answers (2)

Steve Jessop
Steve Jessop

Reputation: 279255

unsigned char *pb_buffer doesn't create a buffer, it creates a pointer, which initially isn't pointing to anything. It's the call to url_close_dyn_buf that allocates the buffer, and stores a pointer to it in the place specified by its second argument.

The documentation for url_close_dyn_buf should tell you how to free it. The documentation is a bit sketchy, but av_free(pb_buffer) is the answer. The documentation for av_free recommends using av_freep(&pb_buffer) instead: that does the same thing and then sets pb_buffer to 0.

Upvotes: 1

Ori Pessach
Ori Pessach

Reputation: 6833

av_free(pb_buffer) perhaps? The function appears to be internal to ffmpeg, and its documentation indicates that you need to use av_free() to free the buffer it allocates.

The function is documented here.

Upvotes: 3

Related Questions