C++ Russia 2018: Фёдор Короткий, Память – идеальная абстракция
Интереснейший доклад о том, как устроена память “внутри“. Обычно в ВУЗах часть этой информации дается на программировании, другая - на операционных системах, а третья - на курсах типа “архитектура ЭВМ“. Итак, доклад построен вокруг трех строчек кода:
1) int* ptr = new int;
2) *ptr = 42;
3) delete ptr;
В принципе, все это применимо к любому другому языку программирования. В первой строке мы выделяем динамическую память для хранения целого числа. Во второй - записываем по полученному адресу число 42. В третьей - освобождаем память. Но что же внутри? (ответ дается для архитектуры x86_64, операционной системы Linux и аллокатора jemalloc {один из хороших аналогов стандартному аллокатору}). Ниже краткое содержание доклада с таймингом:
7:40 - оказывается malloc работает по-разному для “маленьких“ и “больших“ объектов. У нас объект маленький... .
9:30 - оказывается аллокатор поддерживает хитрую структуру данных для быстрого выделения памяти под