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