Step 2 (S-10029)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/550/step/2

Step 2 (S-10029) 1.png

[00:00 - 00:19] мы уже обсудили то как создаются и удаляются теперь давайте поговорим о том как объекта копировать дату рассмотрим следующий пример пусть вас обедом класс сочувственно массива на предприятиях прибыли


Step 2 (S-10029) 2.png

[00:19 - 00:38] 1 перемена инициализируется числом 10 до соответствует создания массива размер 10 при этом на строки будь страница 2 1 соответствует 2 совет в поле сайт запишется число 10 которая соответствует размер массива


[00:38 - 00:56] это запишется указатель на некоторых динамический массив размера 10 она не что произойдет с массивом а 2 на стояке вот располагаться 1 год запись на размер


[00:56 - 01:14] массива 20 а 2 год записано указатель на некоторый динамический массив размер 20 теперь когда мы пытаемся создать 3 перемену и проанализировать или не размер а значения массива 1


[01:14 - 01:33] при такой инициализации копирования копирование полей которые соответствуют массиву то есть на стоке вместятся оба мира будет содержать значение которое соответствует размер массива 1 10


[01:33 - 01:49] а 2 будет содержать указатель такой же как ранее писали что у нас будет 2 объекта типа с значит самолета который ссылаются на нем той же нагрузки на ось


[01:49 - 02:06] следующей строчке мы пытаемся присвоить объекту значение объекта при этом произойдет изменение значений которые хранятся в объекте а 2 то есть на месте числа 20


[02:06 - 02:25] будет записано число 10 которая соответствует размер массива 1 вместо указателя на диванчике массив размер 20 да конечно указатель на массив которые соответствуют перемены 1 этом размер 10 этот перечень наций теперь


[02:25 - 02:43] будь указывает что мы получили мы получили что на стыке располагается 3 объекта типа целочисленному которые ссылаются на 1 и тот же день что есть что придает при выходе из функции


[02:43 - 02:59] при выходе из функции подойдет вызов деструкторов соответствующих локальных переменных сначала вызвать деструктор переменной и в деструкторе качественному все придет освобождение понять


[02:59 - 03:15] то есть деструктор а 3 освободить память соответствующую 1 классе то же самое произойдет и деструкторе перемены а 2 попытаемся освободить память но при этом


[03:15 - 03:33] даны уже освобождена инструкторы матрица пресным получится ошибка в не помню пытались дважды сфолить это тоже понять если бы на этом месте наше приложение не упал то после этого вызвался деструктор переменной а 1 и мы снова постараюсь освободить память


[03:33 - 03:49] которую занимал дождемся массив а уже освобождена и снова ошибка он заметил также что кроме ошибки здесь есть еще утечка памяти в тот момент когда мы присвоили переменной а 2


[03:49 - 04:08] значение переменной 1 мы потеряли все ссылки на динамические протоколы 20 вставь мы перечеркнут этот показатель очень от ссылок на этот массив остался висеть павел сегодня вы можете вот