Ради этого вопроса я буду представлять память как простой массив байтов, и я буду говорить о куче памяти, потому что ее можно динамически выделять.
Допустим, я создаю экземпляр некоторого класса и создаю объект в куче, где уже выделена некоторая память. Затем, после создания объекта, я выделяю еще немного памяти (возможно, путем создания экземпляра другого класса). Разумеется, это подразумевает использование ключевых слов new
и delete
.
Теперь память выглядит так:
... byte byte my_object ... my_object byte byte ...
Что именно происходит, когда выполняется delete my_object;
? Вся остальная память смещена влево на sizeof(MyClass)
? Если да, то кем? ОС? Что же тогда происходит, когда нет ОС, обеспечивающей виртуальную память?