NGX_POOL_ALIGNMENT

Maxim Dounin mdounin на mdounin.ru
Пн Сен 25 11:44:47 UTC 2017


Hello!

On Mon, Sep 25, 2017 at 11:41:43AM +0300, lego12239 at yandex.ru wrote:

> On Sun, Sep 24, 2017 at 02:44:13AM +0300, Maxim Dounin wrote:
> > On Fri, Sep 22, 2017 at 11:45:27AM +0300, Oleg wrote:
> > > 
> > >   Т.е. если выставить в 8 (sizeof(void*)), то должно быть норм, так?
> > 
> > На практике разницы не будет, в том смысле, что на современных 
> > 64-битных платформах возвращаемая память всё равно будет выровнена 
> > на 16.
> 
>   Хм. Максим, я вот что вычитал в man memalign (funtoo linux):
> 
>        The glibc malloc(3) always returns 8-byte  aligned  memory  addresses,  so
>        these functions are needed only if you require larger alignment values.
> 
>   Вы уверены, что 16?

Абсолютно.  Ну то есть это, безусловно, зависит от многих 
факторов, но на Линуксе со штатным аллокатором на 64-битных 
платформах - будет 16:

https://www.gnu.org/software/libc/manual/html_node/Aligned-Memory-Blocks.html

: The address of a block returned by malloc or realloc in GNU 
: systems is always a multiple of eight (or sixteen on 64-bit 
: systems).

И на FreeBSD на практике тоже будет 16, причём даже для 32-битных 
платформ - выравнивание 8 возможно только для аллокаций не больше 
8 байт, что в данном случае гарантировано не так.

-- 
Maxim Dounin
http://nginx.org/


Подробная информация о списке рассылки nginx-ru