home.social

#аллокатор — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #аллокатор, aggregated by home.social.

fetched live
  1. Управление памятью в контейнерах STL. От абстракций к реализации

    Каждый разработчик на C++ начинает свой путь с оператора new. Нам объясняют его работу очень просто: « new выделяет память в куче и создает там объект». Мы пишем auto ptr = new MyClass(42); и до поры до времени не задумываемся, что скрывается за этой строчкой.

    habr.com/ru/articles/1091290/

    #управление_памятью #аллокатор #выделение_памяти

  2. OSDEV: Разработка аллокатора на С++ часть 5. osdev-libstdc

    Приветствую! Это обзорная статья на этот раз совсем простая. Используется уже написанный аллокатор . Я лишь ставлю в известность читателей о существовании в osdev-libstdc вполне стандартных функций aligned_alloc, malloc, calloc, realloc и free. Их реализация примитивна:

    habr.com/ru/articles/1052784/

    #osdev #malloc #realloc #free #аллокатор #спинлок

  3. OSDEV: Разработка аллокатора на С++ часть 4. mem_malloc_aligned

    Приветствую читатель! Для тех кто со мной впервые вот оглавление: Часть 1 Часть 2 Часть 3 Код лежит тут Подразумевается что читатель знаком с архитектурой аллокатора из части 3 и понимает алгоритм неявного списка свободных блоков который был освещен в части 1 Аллокатор работает стабильно, все тесты зеленые, включая тесты на стабильность. И следующим шагом логично бы реализовать перегрузки new и delete для abi, но вот незадача: там есть версии принимающие дополнительный аргумент, а именно выравнивание. Эту фичу я реализовать как раз забыл. В архитектуре которая рассматривается в предыдущей статье это оказалось простой, но интересной задачей. Ее мы и обсудим ниже. Решение потребовало реализации функции mem_malloc_aligned которая выделит бОльший кусок памяти с учетом запрошенного выравнивания что бы мы там точно нашли правильно выровненный адрес. Но что если адрес указателя из mem_malloc_aligned не совпадает с адресом указателя который вернул mem_malloc? Что делать в mem_free? Что делать в mem_realloc? Как мне работать с указателем перед которым не хедера? Для начала я решил применить технику добавления смещения перед payload выровненного блока вместо хедера, смещения до payload изначального блока у которого есть хедер и футер. Но как мне отличить offset от header? Я решил добавить magic number в хедер и футер увеличив тем самым размер оверхеда в 2 раза и раз уж от него считалось внутреннее выравнивание блоков памяти в аллокаторе и минимальный размер блока, то теперь минимальный размер блока стал 32 байта, а с оверхедом все 64. Теперь можно просто проверять magic number и если он не совпадает, то интерпретировать число на месте хедера как смещение до payload блока который вернул mem_malloc и далее получив на него указатель работать с блоком стандартным образом.

    habr.com/ru/articles/1047178/

    #аллокатор #распределение_памяти #malloc #free #realloc

  4. OSDEV: Разработка аллокатора на С++ часть 3. Финальный аллокатор со списками свободных блоков

    В третьей статье пойдет речь уже о готовом аллокаторе который вполне пригоден для распределения памяти

    habr.com/ru/articles/1045692/

    #аллокатор #allocator #malloc #free #распределение_памяти #osdev #менеджмент_памяти #memory_management

  5. Последовательное иерархическое распределение сумм между получателями. Постановка задачи. Выбор технологи...

    #spark #graph #apache #spark #аллокация #аллокатор #аллокации #аллокация #затрат

    Origin | Interest | Match
  6. Пул объектов: паттерн эффективного управления памятью

    Современные аллокаторы общего назначения умеют оптимизировать выделение памяти для небольших объектов и не только, но зачастую они не дают строгих гарантий отсутствия системных вызовов при очередной аллокации или освобождении памяти. Для высоконагруженных систем, чтобы эффективно выделять и освобождать память под объекты без лишних вызовов malloc/free и потенциальных системных вызовов, используют паттерн пулов объектов.

    habr.com/ru/articles/1035874/

    #highload #аллокатор #аллокация_памяти

  7. О том, как легкомысленное использование полиморфных аллокаторов может испортить вам жизнь

    Вы хотите идти в ногу со временем и перевести ваш проект на полиморфные аллокаторы? Вас не могут отговорить от этого даже затраты на виртуальные вызовы? Тогда вы просто обязаны знать о нюансах с лайфтаймом, и почему нельзя просто взять и поменять свои контейнеры на аналоги из пространства имён pmr.

    habr.com/ru/companies/pvs-stud

    #с++ #аллокатор #полиморфные_аллокаторы #полиморфизм #память #лайфтайм #время_жизни

Share on Mastodon

Enter the server where you have an account.