Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 81

Автор Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½ ΠœΠ΅ΠΉΠ΅Ρ€

[x]. Π―Π·Ρ‹ΠΊ C ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Pascal, Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ динамичСскиС массивы ΠΈ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ массивами, Π―Π·Ρ‹ΠΊ Π‘ динамичСски Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ массивы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ malloc.

[x]. PL/I ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС ΠΌΠΎΠ΄Π΅Π»ΠΈ.

[x]. Lisp систСмы Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Π±Ρ‹Π»ΠΈ высоко Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ ΠΈ полагались большСй Ρ‡Π°ΡΡ‚ΡŒΡŽ Π½Π° динамичСский Ρ€Π΅ΠΆΠΈΠΌ распрСдСлСния памяти. Одна ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Lisp, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ для прСдставлСния списков, - CONS, создаСт структуру ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΠΎΠ»Π΅ΠΉ. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΠΎΠ»Π΅ хранится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт. Π—Π΄Π΅ΡΡŒ CONS, скорСС источник Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Π΅ΠΌ инструкция ΠΈΡ… создания.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС памяти Π² Ρ‚Ρ€Π΅Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ…

Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², созданных ΠΊΠ°ΠΊ Π² основанном Π½Π° стСкС Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ρ‚Π°ΠΊ ΠΈ Π² динамичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ? Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π·Π°Π½ΡΡ‚ΡƒΡŽ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… инструкциях создания Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²?

Π’ статичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ сущСствуСт: для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° навсСгда присоСдинСнная ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ связь с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ всС врСмя, ΠΏΠΎΠΊΠ° ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС памяти Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² настоящСй Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠ΅ этого понятия. Однако ΠΏΡ€ΠΈ острой Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ΅ памяти похоТая тСхнология ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Если Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, присоСдинСнныС ΠΊ Π΄Π²ΡƒΠΌ сущностям, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈ эти сущности Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ свои значСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ использованиями, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ памяти Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ сущности, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ΠΌΠΈ Π² бСзопасности Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅. Π­Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, извСстная ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ (overlay), достаточно уТасная, всС Π΅Ρ‰Π΅ практикуСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Если всС-Ρ‚Π°ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅, Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅Π³ΠΎ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ автоматичСски, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, - слишком Π²Π΅Π»ΠΈΠΊΠ° Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ошибки. Π“Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ остаСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ этапС ΠΆΠΈΠ·Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НСоТиданноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ. ΠœΡ‹ столкнСмся с ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π½ΠΈΠΆΠ΅, Π² Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ сборки мусора.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅, основанном Π½Π° стСкС, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, присоСдинСнныС ΠΊ сущностям, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² стСкС. Π’ языках с Π±Π»ΠΎΡ‡Π½ΠΎΠΉ структурой ситуация упрощаСтся: Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² происходит ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ для всСх сущностСй Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, допуская использованиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ стСка для всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘Ρ…Π΅ΠΌΠ° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ элСгантна, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π²Π° мноТСства ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… событий:

ДинамичСскоС свойство (событиС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния) БтатичСскоС свойство (ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) Π’Π΅Ρ…Π½ΠΈΠΊΠ° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Начало Π±Π»ΠΎΠΊΠ° Π’Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ΠΎΠ΄ΠΈΠ½ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ локальной сущности Π±Π»ΠΎΠΊΠ°) Π² стСк Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠšΠΎΠ½Π΅Ρ† Π±Π»ΠΎΠΊΠ° Π’Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· стСка

Π’Π°Π±Π»ΠΈΡ†Π° 9.1.Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² языках с Π±Π»ΠΎΡ‡Π½ΠΎΠΉ структурой


ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ этой Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΠΈ языков с Π±Π»ΠΎΡ‡Π½ΠΎΠΉ структурой. Π’ динамичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ всС Π½Π΅ Ρ‚Π°ΠΊ просто. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связана с ΠΌΠΎΡ‰ΡŒΡŽ самого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°: Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ компиляции Π½ΠΈΡ‡Π΅Π³ΠΎ нСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌ.

ΠžΡ‚ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅

Π’ динамичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Π² нСпрСдсказуСмыС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° выполнСния; Ρ€Π°Π· Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ (опрСдСляСмый ΠΏΠΎΠ·ΠΆΠ΅ Π² этом обсуТдСнии) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ Π·Π°Π½ΡΡ‚ΡƒΡŽ ΠΈΠΌΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° - присутствиС Π² этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ отсоСдинСния (detachment), ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присоСдинСния. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ·ΡƒΡ‡Π°Π»ΠΎΡΡŒ, ΠΊΠ°ΠΊ сущности ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, Π½ΠΎ Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ отсоСдинСния. ΠŸΠΎΡ€Π° это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

ΠžΡ‚ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ распространяСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ x ссылочного Ρ‚ΠΈΠΏΠ°. Если x Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ x являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ O, Ρ‚ΠΎ Π½Π΅Ρ‚ способа ΠΎΡ‚ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ x ΠΎΡ‚ O. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, Ссли x Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ класса, O прСдставляСт ΠΏΠΎΠ΄ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ большого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BO. Π’ΠΎΠ³Π΄Π° BO, Π° вмСстС с Π½ΠΈΠΌ ΠΈ O, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ нСдостиТимым ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… Π½ΠΈΠΆΠ΅. ΠŸΠΎΡΠ΅ΠΌΡƒ Π² ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части этой Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ рассмотрСниСм сущностСй ссылочного Ρ‚ΠΈΠΏΠ°.

Рис. 9.4.  ΠžΡ‚соСдинСниС

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ отсоСдинСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, x ΠΈ y сущности ссылочного Ρ‚ΠΈΠΏΠ° Π²Π½Π°Ρ‡Π°Π»Π΅ присоСдинСны ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ O1 ΠΈ O2. Рисунок ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ случаи D1 ΠΈ D2.

[x]. (D1) ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° x := Void, ΠΈΠ»ΠΈ x := v Π³Π΄Π΅ v Ρ‚ΠΈΠΏΠ° void, отсоСдиняСт x ΠΎΡ‚ O1.

[x]. (D2) ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° y := z, Π³Π΄Π΅ z Π½Π΅ присоСдинСн ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ O2, отсоСдиняСт y ΠΎΡ‚ O2.

[x]. (D3) Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ отсоСдиняСт Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚ присоСдинСнных ΠΊ Π½ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

[x]. (D4) Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ создания create x , присоСдиняСт x ΠΊ вновь созданному ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, отсоСдиняСт x, Ссли ΠΎΠ½ Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π» присоСдинСн ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ O1.

Π‘Π»ΡƒΡ‡Π°ΠΉ D3 соотвСтствуСт Ρ€Π°Π½Π΅Π΅ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ: инициализация Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° a ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ r Π²ΠΎ врСмя Π²Ρ‹Π·ΠΎΠ²Π° t.r(..., b, ...), Π³Π΄Π΅ позиция b Π² Π²Ρ‹Π·ΠΎΠ²Π΅ соотвСтствуСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ a Π² объявлСнии r, Π² точности соотвСтствуСт сСмантикС присваивания a := b.

НСдостиТимыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π—Π½Π°Ρ‡ΠΈΡ‚ Π»ΠΈ отсоСдинСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ O1 ΠΈΠ»ΠΈ O2 (рис.9.4 ), Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ становятся бСсполСзными ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° исполнСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ ΠΈΠΌΠΈ мСсто Π² памяти? Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ слишком просто! Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ создан, ΠΌΠΎΠ³Π»Π° ΡƒΠΆΠ΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ интСрСс ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π½ΠΎ ΠΈΠ·-Π·Π° динамичСских псСвдонимов Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ссылки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ всС Π΅Ρ‰Π΅ подсоСдинСны ΠΊ Π½Π΅ΠΌΡƒ. НапримСр, рис.9.4 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ лишь частноС Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ связСй ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Рассматривая Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ контСкст, (рис.9.5 ) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ O1 ΠΈ O2 всС Π΅Ρ‰Π΅ достиТимы для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Но ΠΈ эта ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° всС Π΅Ρ‰Π΅ Π½Π΅ Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ видСния структуры всСх связСй ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π Π°ΡΡˆΠΈΡ€ΡΡ контСкст, ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ O4 ΠΈ O5 сами Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² отсутствии Π΄Ρ€ΡƒΠ³ΠΈΡ… ссылок, O1 ΠΈ O2 Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠΆΠ΅.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос: "КакиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ?" Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· глобального Π°Π½Π°Π»ΠΈΠ·Π° мноТСства всСх созданных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’Ρ‹Π΄Π΅Π»ΠΈΠΌ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

[x]. (C1) ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ присоСдинСнныС ΠΊ сущностям, извСстны (ΠΈΠ· ΠΏΡ€Π°Π²ΠΈΠ» языка программирования) ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅.

[x]. (C2) ЗависимыС ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ C1. (Напомним, наряду с нСпосрСдствСнно зависимыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ C1, зависимыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ рСкурсивно ΠΈΠΌΠ΅Ρ‚ΡŒ ссылки Π½Π° нСпосрСдствСнно зависимыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.) Π—Π΄Π΅ΡΡŒ рассматриваСтся прямая ΠΈ косвСнная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ.

Рис. 9.5.  ΠžΡ‚соСдинСниС - Π½Π΅ всСгда ΡΠΌΠ΅Ρ€Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

[x]. C3 ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π΅ относящиСся ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Π΄Π²ΡƒΠΌ катСгориям.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°ΠΌΠΈ (origins). ВмСстС с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π‘2 ΠΎΠ½ΠΈ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ мноТСство достиТимых (reachable) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π‘3 нСдостиТимы (unreachable). Они Ρ€Π°Π½Π΅Π΅ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ бСсполСзными. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΌΡ€Π°Ρ‡Π½ΠΎΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ "ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹" для ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π‘3 ΠΈ "ΠΆΠΈΠ²Ρ‹Π΅" для ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ…. (Π£ программистов принята Π±ΠΎΠ»Π΅Π΅ прозаичСская тСрминология, ΠΈ процСсс удалСния ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΉ Π½ΠΈΠΆΠ΅, называСтся просто сборкой мусора.)

Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² наряду с Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ "ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»" ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ "ΠΊΠΎΡ€Π΅Π½ΡŒ". ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сама ОО-систСма ΠΈΠΌΠ΅Π΅Ρ‚ "ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚" ΠΈ "ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ класс". Однако Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ двусмыслСнности Π½Π΅ сильно Π²Ρ€Π΅Π΄ΠΈΡ‚ Π΄Π΅Π»Ρƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ Π΄Π°Π»Π΅Π΅, являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠ².

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ использовании динамичСского Ρ€Π΅ΠΆΠΈΠΌΠ° - Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ достиТимых ΠΈ нСдостиТимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ достиТимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ всСм ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠΌ ссылкам. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вопрос, - ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Ρ‹? ΠžΡ‚Π²Π΅Ρ‚ зависит ΠΎΡ‚ структуры ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° выполнСния, опрСдСляСмой Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ Π² Π΅Π΅ основС языком программирования.