Size: a a a

Compiler Development

2021 July 09

D

Danya in Compiler Development
Ну я не вижу проблемы
источник

AT

Alexander Tchitchigi... in Compiler Development
Это забавно, что Вы знаете про аллокацию достаточно, чтобы НЕ понимать как она работает в конечном итоге. 😊
источник

A

Arelav in Compiler Development
У тебя например в tcmalloc, маленькие аллокации выделяются как куски памяти каких то кратных размеров, например ты хочешь 33 байта, а получишь 40/48(в зависимости от установленного для аллокатора выравнивания), то что аллокация именно 33 байта нигде аллокатором не записывается.
У тебя допустим объект sizeof == 1 и при этом нетривиальные деструктор и конструктор
Как именно ты вызовешь потом 33 нетривиальных деструктора
источник

AT

Alexander Tchitchigi... in Compiler Development
> Размер аллоцировано блока может быть больше необходимого
Это не конец истории, а только середина. 😊
источник

A

Arelav in Compiler Development
Объясните
источник

AT

Alexander Tchitchigi... in Compiler Development
Можно системный malloc обернуть в свой malloc. 😉
источник

A

Arelav in Compiler Development
Можно и?
источник

A

Arelav in Compiler Development
Вопрос как компилятор или кто по вашему знанию реализует этот функционал для delete[] expression
источник

VS

Victor Shamparov in Compiler Development
Кстати об аллокаторах.
Кто-нибудь знает статьи по автоматическому подбору аллокаторов или изменению алгоритмов аллоцирования в качестве оптимизации в составе компилятора?
Идея навеяна диссертацией Криса Латтнера - он там делает pool allocation.
источник

а

а это кто in Compiler Development
источник

а

а это кто in Compiler Development
подробный ответ
источник

AT

Alexander Tchitchigi... in Compiler Development
Мне кажется, мы Вам уже рассказали про все кубики, осталось их сложить в пирамидку. 😊
источник

A

Arelav in Compiler Development
Спасибо посмотрю
источник

D

Danya in Compiler Development
Хранить количество созданных объектов )
источник

AT

Alexander Tchitchigi... in Compiler Development
Кажется, у компилятора для этого недостаточно информации. А всякие jemalloc, по-моему, так и делают в рантайме. Ну или упрощённое приближение.
источник

A

Arelav in Compiler Development
Про второй вариант не предполагал, любопытно спасибо ещё раз
источник

AT

Alexander Tchitchigi... in Compiler Development
Не нужно. Вызов malloc вернёт тебе кусок запрошенного размера, так что можно тупо поделить. То, что аллокатор выделил кусок большего объёма — его личное интимное дело, он это у себя записывает, а нас не касается.
источник

TS

Timur Safin in Compiler Development
компилятор не знает никаких подробностей реализации аллокаторов. Он заматчил при компиляции new[] и delete[] для данного типа скажем отсюда https://github.com/llvm-mirror/libcxx/blob/master/include/new#L211-L214 их и будет звать при вызове этих операторов.
источник

A

Arelav in Compiler Development
Ну да вопрос был где и какие кроме очевидных оптимизаций можно применить
источник

A

Arelav in Compiler Development
Пожалуйста читай то что написано, очень тяжело спокойно отвечать: Когда написан вопрос про delete[] expression, который сначала вызывает n деструкторов, а затем operator delete чтобы освободить память.
А тебе отвечают ссылками на operator delete
источник