Custom Allocator в C - PullRequest
       34

Custom Allocator в C

0 голосов
/ 01 декабря 2018

Я пытаюсь понять, как работает пользовательский распределитель памяти, и наткнулся на это .Что делает эта конкретная функция и почему это необходимо.Почему он объявлен как static inline

static inline size_t word_align(size_t size) {
return (size + (sizeof(size_t) - 1)) & ~(sizeof(size_t) - 1);
}

Я также не понимаю, зачем нужна база malloc.Может кто-нибудь объяснить, пожалуйста, что здесь происходит.Или, еще лучше, приведите более простой пример пользовательского распределителя с split / merge.

1 Ответ

0 голосов
/ 01 декабря 2018

Как упоминает Харпер, целью функции является поиск следующего адреса памяти, который выровнен так же, как size_t , но с достаточным дополнительным пространством для хранения размера байтов.Выравнивание является большой проблемой производительности.Google Производительность выравнивания .Malloc предоставляет определенные гарантии по этому поводу.Статический в этом случае обычно означает, что функция не должна быть видна вне модуля, в котором она находится. Google Internal Linkage .Inline - это предложение для компилятора, что он может свободно заменять фактический вызов функции на тело функции для повышения производительности.Google Встроенное расширение .

...