Step 5 (S-10015)

From Stepik Wiki
Revision as of 16:45, 17 March 2017 by Admin (Talk | contribs) (Create page for step id=10015)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/547/step/5

<img width="50%" src="https://ucarecdn.com/d9ee616b-06f6-4262-92f5-56ae7f7168c4/">

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


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


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


[00:52 - 01:09] и после этого смыть проливным для того чтобы создать такой памяти объект типа эры нам потребуется специальная форма оператор new это оператора + размещение


[01:09 - 01:28] такой оператор не 1 дополнительный параметр этот параметр указывает адрес по которому должен быть это так то есть в отличии от обычного нее операторами с размещением не выделяет никакой памяти просто вызывает конструктор по тому адресу который передали ему в качестве аргумента


[01:28 - 01:46] используя оператор new смещением мы можем создать объекте по указатель в дальнейшем когда объект но больше не нужен мы должны вызвать его деструктор то что вызвать деструктор


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


[02:01 - 02:21] важно отметить что с размещением можно натолкнуться на обосрался компилятор может накладывать ограничения на выравнивание некоторых депутатов например может оказаться что на этой платформе на которой планируется ваш код все указатели должны храниться в ячейках


<img width="50%" src="https://ucarecdn.com/d5f9126c-361d-4d25-b16d-214bd0ff991c/">

[02:21 - 02:38] делятся на 4 тогда при использовании оператора new перемещения на не выровнен памяти мы можем легко нарушить данное ограничение соответственно при использовании специальных схема локации надо аккуратно следить за тем чтобы


[02:38 - 02:54] танец который вы создаете была очень простой способ нарушить на требование это например попытаться дать объект массиве которые сложно так как никто не гарантирует что все будет как то специально говорю


[02:54 - 03:14] давайте посмотрим как это сделать на примере то есть можно например создать массив типа черт который содержит количество байт достаточно для создания объекта типа италии после этого пытаться разместить объект данном массиве если окажется что на


[03:14 - 03:32] текущей платформы есть какие то ограничения то может оказаться что в данном кусочки кода мы нарушили ограничение на выравнивание и соответственно очень определенных людей поэтому


[03:32 - 03:44] если где то в вашей программе есть подобный код размещения объекта в массиве на строки то это место где может оказаться потенциально