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

Всем привет. Почему на плюсах так распространено писать кастомные аллокаторы

в библиотеках? Из-за того что стандартный аллокатор медленный? Или это как-то с STL связано

10 ответов

22 просмотра

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

Stranger- Автор вопроса
Anton Semenov
стандартный аллокатор универсальный, прилично рабо...

Может, дело еще в том, что кастомный аллокатор может работать как арена аллокатор и не делать системные вызовы каждый раз?

Stranger
Может, дело еще в том, что кастомный аллокатор мож...

начиная с C++17 в стандартной библиотеке появились полиморфные аллокаторы, где есть стандартная арена - std::pmr::monotonic_buffer_resource а раньше да, приходилось городить велосипеды

Stranger- Автор вопроса
Anton Semenov
начиная с C++17 в стандартной библиотеке появились...

Понял, спасибо. И еще вопрос: вот я пишу библиотеку (конкретно - ecs фреймворк для геймдева) на плюсах, стоит ли мне избегать использования сырых указателей как внутри, так и в api для пользователя, работать только с умными указателями? Я понимаю, что семантика умных указателей - это семантика владения, но все же я хочу понять, насколько принято в современном сообществе использование сырых указателей.

Stranger
Понял, спасибо. И еще вопрос: вот я пишу библиотек...

невладеющие указатели совершенно незазорно выставлять в API, но в современном коде действительно важно чтобы владеющие имели какой-то свой тип - обычно это как раз-таки unique_ptr, и в довольно редких - shared

Stranger- Автор вопроса
Anton Semenov
невладеющие указатели совершенно незазорно выставл...

Понял. Спасибо большое. weak_ptr не используют?

Stranger
Понял. Спасибо большое. weak_ptr не используют?

weak_ptr это по сути ослабление shared_ptr, можно создать только из него и он убирает счетчик ссылок

Stranger
Понял. Спасибо большое. weak_ptr не используют?

используют, конечно, как же иначе избегать циклов =) но вообще с shared_ptr лучше быть осторожным. Это хорошо спроектированная и работающая штука, но в большинстве случаев в хорошо спроектированной программе владелец объекта всегда один, то есть по сути shared нужны нечасто. А если их использовать активно - они имеют неприятное свойство расползаться по всему коду, так что потом фиг поймешь где объект должен удалиться, что не есть хорошо для отладки. Плюс это дополнительный оверхед на работу атомарного счетчика.

Stranger
Понял. Спасибо большое!)

я тут во многом пересказал то, что написано в core guidelines, если еще не читали - рекомендуем =)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта