Boost.Pool: различия между версиями
Содержимое удалено Содержимое добавлено
Строка 470:
Так как pe + i четко определено, тогда в соответствии с Заключением 3, pn + jn также четко определено и имеет правильно выравнивание в соответствии с Утверждением 2 и Заключениями 1 and 2.
====
The proof above covers alignment requirements for cutting chunks out of a block. The implementation uses actual object sizes of:
Запрошенный размер объекта (requested_size); это размер памяти запрошенный пользователем
void* (указатель на void); нужен для размещения списка свободных блоков
size_type; мы храним размер следующего блока в каждом блоке
Также каждый блок содержит указатель на следующий блок; он хранится как указатель на void и приводится к нужному типу при необходимости, для упрощения требований к выравниванию.
Следовательно, alloc_size является наибольшим размеров из указанных выше, округленный, чтобы бы быть кратным всех трем размерам. Это гарантирует выравнивание при условии, что выравнивание является степеньь двух: что выполняется на всех известных платформах.
==== A Look at the Memory Block ====
|