STINNER Victor <vstin...@redhat.com> added the comment:

The x86-64 ABI requires that memory allocated on the heap is aligned to 16 
bytes.

On x86-64, glibc malloc(size) aligns on 16 bytes for size >= 16, otherwise 
align to 8 bytes. So the glibc doesn't respect exactly the ABI. I understand 
that a compiler will not use instructions which require 16B align on a memory 
block smaller than 16B, so align to 8B for size < 16B should be fine *in 
practice*.

Python objects are at least 16B because of PyObject header. Moreover, objects 
tracked by the GC gets additional 16B header from PyGC_Head.

But pymalloc is also used for PyMem_Malloc() since Python 3.6, and 
PyMem_Malloc() is used to allocate things which are not PyObject.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue27987>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to