Это основной вопрос, на который я не могу найти ответа.
При следующем коде произойдет утечка памяти:
int main(){
A* a = new A();
// 1
}
//2
Допустим. скажем, что a получил значение 1000. То есть адрес 1000 в куче теперь занят объектом A. На 1 a == 1000 и на 2 a выходит за рамки. Но некоторая информация отсутствует.
В реальной жизни адрес 1000 - это адрес байта в памяти. Этот байт не содержит информации о том, что он хранит ценную информацию.
Мои вопросы:
кто хранит эту информацию?
как хранится эта информация?
какой компонент «знает», откуда и куда указывает указатель a ? Как компьютер может узнать, что a указывает на sizeof (A) байтов?
Спасибо!