170 похожих чатов

Скорее всего аллокатор хранит размер аллокации и флаги, если они

не научились использовать operator delete(void*, size_t). Кстати никто не интересовался, хоть один аллокатор уже научился этому?

12 ответов

30 просмотров

А этим можно без аллокатора пользоваться?

magras- Автор вопроса

https://en.cppreference.com/w/cpp/memory/new/operator_delete Перегрузки 5-6. Из описания узнал, что плюсы позволяют удалять объекты incomplete типа. Хорошие, качественные грабли.

magras- Автор вопроса
magras
https://en.cppreference.com/w/cpp/memory/new/opera...

В прочем, наверное, достаточно не определять (удалить дефолтный?) оператор без передачи размера. Наверное, тогда будет ошибка компиляции при попытке вызвать обычный delete.

magras
https://en.cppreference.com/w/cpp/memory/new/opera...

Да позволяют, но если класс нигде не определён скорее всего не слинкуется

magras- Автор вопроса
disba1ancer
Да позволяют, но если класс нигде не определён ско...

Ну это скорее всего удаление opaque pointer. На мой взгляд это большой косяк, потому что я ожидал, что управление памятью тоже будет недоступно внешнему коду.

magras
Ну это скорее всего удаление opaque pointer. На мо...

По идее неизвестно даже приватный ли деструктор, так что всё сложно

Уверен что почти все, вот пример tcmalloc https://github.com/google/tcmalloc/blob/master/tcmalloc/tcmalloc.cc#L1756 Но в целом это не даёт современным аллокаторам значительных преимуществ, для маленьких аллокаций используются фиксированный размер блоков, и для них мы просто можем выкинуть вычисление этого размера блока (несколько операций с указателем, и массивом) А для больших даже если они сохранялись в аллокации, это в целом не важно https://github.com/google/tcmalloc/blob/master/tcmalloc/tcmalloc.cc#L1732

а в чем вопрос то ?

magras- Автор вопроса
Arelav
Уверен что почти все, вот пример tcmalloc https://...

Для того чтобы выкинуть размер блока, нужно уметь по указателю определять размер блока. Первое что приходит в голову - это иметь группы блоков стандартного размера кратного двойке и хранить размер блока например в начале группы, чтобы его можно было получить обнулением младших битов адреса. Вероятно в современных аллокаторах используют подобный подход. Кажется что вот эта функция делает что-то похожее.

magras
Для того чтобы выкинуть размер блока, нужно уметь ...

Не совсем так, но да, небольшие объекты в tcmalloc эффективно батчатся https://google.github.io/tcmalloc/design.html#deallocation https://google.github.io/tcmalloc/design.html#pagemap-and-spans

magras
Для того чтобы выкинуть размер блока, нужно уметь ...

В целом да. Насколько я помню в tcmalloc конкретно это работает засчет того что есть специальное дерево (2-3 уровневое), которое для адресов страничек (аллокатора, не ос), которые используются под конкретный размер аллокаций, хранит то под какой размер(ну класс не важно)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта