Это подмножество a предыдущий вопрос.
В качестве упражнения я пишу диспетчер памяти, то есть код, реализующий malloc, realloc и free (или new и delete). RTL для моего языка, Delphi, позволяет легко заменить диспетчер памяти RTL. Для тех из вас, кто использует C++, это похоже на переопределение new и delete, но на более низком уровне (это связано с самим RTL, а не с языковой функцией).
Я ищу ресурсы о высококачественных подходах, которые другие использовали для решения той же проблемы, и пытаюсь выяснить, какие алгоритмы используют другие крупные поставщики компиляторов. В то время как Delphi хорошо документирован, я не могу найти никакой информации о реализациях, используемых MS VC++, .Net или Objective C. Эти поставщики, кажется (?), не позволяют подключать их RTL, как это делает Delphi. Вся документация кажется высокоуровневой, например NSAutoReleasePool
для выбора случайного примера - слишком высокоуровневой для этого вопроса.
Какие алгоритмы управления памятью используют основные поставщики (Microsoft VC++ и .Net и Apple Objective C) в своих библиотеках времени выполнения?
- Embarcadero Delphi и C++ Builder хорошо документированы.
- Похоже, Linux использует Buddy, хотя я подозреваю, что эта информация устарела.
- MS VС++: неизвестно.
- .Net: неизвестно.
- Цель С: неизвестна.
Примером отличного ответа может быть документ, описывающий реализацию диспетчера памяти, например эту или ссылку на опубликованную статью. Примером полезного ответа может быть алгоритм «Среда выполнения VC++ использует распределитель Hoard а>'.