ведь гарантий что он продолжаешь не наткнутся на участок памяти который уже записан?
Есть отдельный компонент рантайма, аллокатор, который выдает непересекающиеся буферы в памяти заданного размера
Выделением и освобождением непересекающихся кусков памяти занимается аллокатор Вектор просто обращается к аллокатору когда ему надо выделить память
Его API где-то в std::alloc должен лежать
Это в операционной системе?
AFAIK, аллокатор встроен в стандартную библиотеку, и его даже можно заменить на свой
в составе операционной системы идет реализация рантайма С, в которую уже включен аллокатор. Многие программы им и пользуются.
В частности программы на расте по умолчанию им пользуются
Считаете иначе?
ну а что, glibc в большинстве дистров gnu/linux, что-то типа vscrt в винде и так далее
То скорее всего все равно будет какая-нибудь статическая библиотека, с которой программа под эту ОС будет слинкована при сборке.
Возможно, будет, возможно, нет. А *alloc вообще в jemalloc обычно в наши дни, а не напрямую в глибсе.
Есть хороший доклад про выделение памяти. Правда, он не про раст, а про плюсы. Но в расте всё тоже самое.
чтобы раст ходил в jemalloc, нужно его специально настроить.
Вау, нет)) Если всё как вы утверждаете, то совсем не обязательно.
С какого-то древнего релиза std раста дергает те malloc/free, которые будут предоставлены при сборке/в рантайме. Чтобы гарантированно был jemalloc, нужно явно с ним слинковаться.
Обсуждают сегодня