ngx_array.c allocation question
Valentin V. Bartenev
vbart at nginx.com
Tue Oct 27 21:42:11 UTC 2015
On Tuesday 27 October 2015 20:52:43 Joel Cunningham wrote:
> I'm fairly new to the NGINX sources and have been studying ngx_array.c (from
1.9.5), particularly how the array grows when full.
> I'm having some confusion about how pool memory isn't leaked when the new
array size can not fit within the current pool allocation and we call
ngx_palloc(). The new allocation is assigned to the local variable new, which
is eventually assigned to a->elts, but the old memory that was claimed out of
the previous pool allocation (and tracked by a->elts) isn't released/marked as
no longer used in the pool. I would have expected some manipulation of p-
>d.last, similarly to how ngx_array_destroy() releases the memory from the
pool allocation. Is there something I'm not understanding about the way array
uses the memory pool?
> It seems like over time an array that continues to grow (past the current
pool allocation) would leave memory claimed within the pool allocation that
it's no longer using or tracking
It's ok, since pools usually have relatively short lives.
wbr, Valentin V. Bartenev
More information about the nginx-devel