Hello!
On Tue, Oct 12, 2010 at 08:59:13PM +0400, Franchoze Eric wrote:
>
>
> 12.10.10, 01:45, "Franchoze Eric" <franchoze@yandex.ru>:
>
> > Is free() needed here?
> >
> > ngx_pool_cleanup_t *
> > ngx_pool_cleanup_add(ngx_pool_t *p, size_t size)
> > {
> > ngx_pool_cleanup_t *c;
> >
> > c = ngx_palloc(p, sizeof(ngx_pool_cleanup_t));
> > if (c == NULL) {
> > return NULL;
> > }
> >
> > if (size) {
> > c->data = ngx_palloc(p, size);
> > !!! do we need nginx_free(p); here?!!!!
> >
> > if (c->data == NULL) {
> > return NULL;
> > }
> >
>
> Opps, I mean nginx_free(c) of cource. It is allocated in lines
> above and if c->data is not allotated it just returns from
> function without freeing c.
The answer is still the same: no.
It's pool allocator, and all memory is freed on pool destruction
(which is expected to follow allocation error shortly).
Additionally, in nginx's pool allocator only large memory blocks
may be freed individually (though it's still not required),
freeing small allocations aren't supported at all.
Maxim Dounin
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://nginx.org/mailman/listinfo/nginx-devel