Немного запутался:
int *a=new int; - выделение памяти из кучи.a - адрес начала выделенных 6 байт*a - значение которое находится по адресу aНеправильная запись в переменную
a=13; // 3) произошла запись не значения а адреса, то есть теперь адрес равен 13, а не какому-нибудь 0x12345678. 4)Теперь нельзя освободить часть кучи
Правильная запись в переменную
*a=13; // Разименнование указателя
Пронумеровал моменты, которые меня интересуют. Напишите какое из утверждений не верно, если такие есть
Думаю, только одно - адрес начала выделенных 6 байт - не то чтобы это невозможно, но пока даже не слышал об 6-байтных int.
А так - все верно.
int *a=new int; - выделение памяти из кучи.
В общем случае - да. Но, например, operator new может быть перегружен и тогда всё будет зависеть от его работы.
a - адрес начала выделенных 6 байт
В общем случае - нет. Например, если выделяется массив объектов non-pod типа, то new-expression может запросить больше памяти, и в начале выделенной памяти поместить количество созданных объектов в выделенной памяти, чтобы потом delete-expression мог вызвать необходимое количество деструкторов для созданных объектов. При этом new-expression вернет указатель уже не на начало выделенной памяти, а на ту память, в которой начинаются Ваши объекты, которыми Вы можете законно оперировать.
a=13; // 3) произошла запись не значения а адреса, то есть теперь адрес равен 13, а не какому-нибудь 0x12345678.
При таком коде возникнет ошибка компиляции, т.к. неявное преобразование из int в указательный тип запрещено. Но оно разрешено для литерала 0, поэтому код a = 0; собрался бы без проблем и да, значение бы стало равно нулю. При этом внутреннее представление указателя определяется реализацией и не обязано быть нулем. Однако, программе об этом заботиться не нужно, все необходимые преобразования из внутреннего представления в численный ноль и наоборот будут сделаны без Вашего участия.
4)Теперь нельзя освободить часть кучи
Если больше нигде нет сохраненного адреса, то да.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей