Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ TRUNCATE ΠΎΡ‚ DELETE Π² языкС T-SQL

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ всСх Π½Π° сайтС Info-Comp.ru! БСгодня я расскаТу Π’Π°ΠΌ ΠΎΠ± отличиях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ инструкциями TRUNCATE TABLE ΠΈ DELETE Π² языкС T-SQL, Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Π² ΠΊΠ°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DELETE, Π° Π² ΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅ΠΉ TRUNCATE.

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Microsoft SQL Server ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько инструкций, Π² частности DELETE ΠΈ TRUNCATE TABLE. Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΡ…ΠΎΠΆΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎ – это ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ строк ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ связи с этим Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ вопросы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – Π° Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ TRUNCATE ΠΎΡ‚ DELETE? ΠΈΠ»ΠΈ Когда Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TRUNCATE, Π° ΠΊΠΎΠ³Π΄Π° DELETE? ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ вопросы Π·Π°Π΄Π°ΡŽΡ‚ ΠΈ Π½Π° собСсСдованиях, вСдь ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ этими ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ SQL эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ прилоТСния ΠΈ запросы.

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°! Π‘Π±ΠΎΡ€Π½ΠΈΠΊ статСй для изучСния языка T-SQL ΠΈ Microsoft SQL Server – Π² этом ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ я собрал Π»ΡƒΡ‡ΡˆΠΈΠ΅ свои ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ SQL Server ΠΈ сгруппировал ΠΈΡ… ΠΏΠΎ ΡƒΡ€ΠΎΠ²Π½ΡŽ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ.

Для Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄Π°Π΄ΠΈΠΌ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этим Π΄Π²ΡƒΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ DELETE?

DELETE – это SQL инструкция языка T-SQL, которая удаляСт ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько строк ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ прСдставлСния Π² Microsoft SQL Server, ΠΏΡ€ΠΈ этом эта опСрация всСгда ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ рСгистрируСтся Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Ρ‚.Π΅. каТдая удалСнная строка.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ TRUNCATE TABLE?

TRUNCATE TABLE – это SQL инструкция языка T-SQL, которая удаляСт всС строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π½Π΅ записывая Π² ΠΆΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строк Π΄Π°Π½Π½Ρ‹Ρ…. TRUNCATE TABLE ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ DELETE Π±Π΅Π· прСдлоТСния WHERE, Π½ΠΎ ΠΎΠ½Π° выполняСтся быстрСС ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ мСньшС рСсурсов.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ TRUNCATE TABLE ΠΈ DELETE

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ сформируСм ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΡ‚Ρ€Π°Π·ΠΈΠΌ всС отличия ΠΈ особСнности Ρ€Π°Π±ΠΎΡ‚Ρ‹ TRUNCATE TABLE ΠΈ DELETE Π² языкС T-SQL.

DELETETRUNCATE TABLE
DELETE – это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ DML (Data Manipulation Language)TRUNCATE TABLE – это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ DDL (Data Definition Language);
DELETE ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° счСт использования WHERETRUNCATE TABLE удаляСт всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΡΠ΅ΠΊΡ†ΠΈΡŽ WHERE ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСльзя
DELETE записываСт Π² ΠΆΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкиTRUNCATE TABLE удаляСт всС строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π½Π΅ записывая ΠΏΡ€ΠΈ этом ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строк Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΆΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
Для DELETE трСбуСтся больший объСм ΠΆΡƒΡ€Π½Π°Π»Π° транзакцийДля TRUNCATE TABLE трСбуСтся мСньший объСм ΠΆΡƒΡ€Π½Π°Π»Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Π·Π° счСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ заносит Π² ΠΆΡƒΡ€Π½Π°Π» запись для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ удаляСмой строки
DELETE выполняСтся ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅TRUNCATE TABLE выполняСтся быстрСС Ρ‚Π°ΠΊΠΆΠ΅ Π·Π° счСт мСньшСго использования ΠΆΡƒΡ€Π½Π°Π»Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
DELETE удаляСт строки ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π° Ρ€Π°Π·TRUNCATE TABLE удаляСт всС строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡƒΡ‚Π΅ΠΌ освобоТдСния страниц
DELETE создаСт Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ трСбуСтся ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹TRUNCATE TABLE Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π² Ρ†Π΅Π»ΠΎΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ страницу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС записи
DELETE сохраняСт счСтчик ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π½Π΅ сбрасываСт Π΅Π³ΠΎ Π΄ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСнияTRUNCATE TABLE сбрасываСт счСтчик ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π΄ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния
DELETE ΠΌΠΎΠΆΠ΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€TRUNCATE TABLE Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π² ΠΆΡƒΡ€Π½Π°Π» Π½Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строк
DELETE сохраняСт статистику ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ пространствоTRUNCATE TABLE освобоТдаСт всС страницы Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, поэтому TRUNCATE удаляСт всю статистику ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ пространство
DELETE ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρ‚Π°Π±Π»ΠΈΡ†Π° являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ индСксированного прСдставлСнияTRUNCATE TABLE нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρ‚Π°Π±Π»ΠΈΡ†Π° являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ индСксированного прСдставлСния
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DELETE, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²Π° Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TRUNCATE TABLE, Ρƒ Вас Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° Π½Π° ALTER TABLE, Ρ‚.Π΅. Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ случаС для Вас Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TRUNCATE TABLE, Π° Π² ΠΊΠ°ΠΊΠΎΠΌ DELETE.

Π‘Π°ΠΌΡ‹ΠΌ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ здСсь являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ссли Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ, Ρ‚.Π΅. ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ WHERE, Ρ‚ΠΎ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ DELETE.

А, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π’Π°ΠΌ приходится пСриодичСски ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΈ значСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π΅ Π²Π°ΠΆΠ½Ρ‹, Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TRUNCATE TABLE, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π±ΡƒΠ΄Π΅Ρ‚ быстрСй, ΠΈ рСсурсов Π·Π°Ρ‚Ρ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄Π΅Ρ‚ мСньшС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ отличия Π² Ρ€Π°Π±ΠΎΡ‚Π΅ TRUNCATE TABLE ΠΎΡ‚ DELETE

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ со столбцом ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π΅Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΈΡ… сначала инструкциСй DELETE, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ инструкциСй TRUNCATE TABLE (ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ пСрСсоздав Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ).

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ тСстовой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

ВыполняСм ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DELETE

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

ВыполняСм ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ инструкциСй TRUNCATE TABLE

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС счСтчик Π½Π΅ сбросился, ΠΈ нумСрация ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»Π°ΡΡŒ, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ счСтчик начался с самого Π½Π°Ρ‡Π°Π»Π°.

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°! Для комплСксного изучСния языка SQL ΠΈ T-SQL Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΌΠΎΠΈ видСокурсы ΠΏΠΎ T-SQL, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° обучСния ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ delete (C++)

ΠžΡ‚ΠΌΠ΅Π½ΡΠ΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° памяти.

Бинтаксис

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

АргумСнт Cast-Expression Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π±Π»ΠΎΠΊ памяти, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, созданного с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° New. delete ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚ΠΈΠΏΠ° void ΠΈ поэтому Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ИспользованиС delete Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ, new Π΄Π°Π΅Ρ‚ нСпрСдсказуСмыС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ delete для указатСля со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0. Вакая инициализация ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли new Π² случаС сбоя возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ new ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ являСтся Π±Π΅Π·Π²Ρ€Π΅Π΄Π½Ρ‹ΠΌ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ new ΠΈ DELETE.

new ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ delete ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для встроСнных Ρ‚ΠΈΠΏΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ массивы. Если pointer ссылаСтся Π½Π° массив, помСститС пустыС скобки ( [] ) ΠΏΠ΅Ρ€Π΅Π΄ pointer :

ИспользованиС delete ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° освобоТдаСт Π΅Π³ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ послС удалСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сбой.

Если delete ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для освобоТдСния памяти для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса C++, дСструктор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° вызываСтся Π΄ΠΎ освобоТдСния памяти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Ссли Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ дСструктор).

Если ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ delete ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° являСтся измСняСмым l-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ послС удалСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° delete

БущСствуСт Π΄Π²Π° синтаксичСских Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° delete: ΠΎΠ΄ΠΈΠ½ для Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ для массивов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° приводят ΠΊ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ: использованиС Ρ„ΠΎΡ€ΠΌΡ‹ массива delete ( delete [] ) для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ использованиС нСмассивного класса DELETE Π² массивС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ delete

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ delete Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Delete.

Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏ класса (класс, Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°ΠΈΠ»ΠΈ объСдинСниС), вызываСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ глобального удалСния. Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° класса имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ освобоТдСния Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π² глобальной области, Ссли Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ delete начинаСтся с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΡƒΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ области ( :: ). Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΠ΅Ρ€Π΅Π΄ освобоТдСниСм памяти ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ удалСния Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ дСструктор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Ссли ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния null). ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ удалСния ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса; Ссли для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ класса Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ отсутствуСт, вызываСтся Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ удалСния. Если Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ удалСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для освобоТдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса, статичСский Ρ‚ΠΈΠΏ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ дСструктор, функция освобоТдСниС Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ дСструктор динамичСского Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

[C++] Всё Π»ΠΈ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎΠ± ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… new ΠΈ delete?

ΠŸΡ€ΠΈΠ²Π΅Ρ‚! НиТС Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΠ± извСстных всСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… new ΠΈ delete, Ρ‚ΠΎΡ‡Π½Π΅Π΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΎ Ρ‡Π΅ΠΌ Π½Π΅ ΠΏΠΈΡˆΡƒΡ‚ Π² ΠΊΠ½ΠΈΠ³Π°Ρ… (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π² ΠΊΠ½ΠΈΠ³Π°Ρ… для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…).
На написаниС Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ мСня ΠΏΠΎΠ±ΡƒΠ΄ΠΈΠ»ΠΎ часто встрСчаСмоС Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ new ΠΈ delete, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я постоянно Π²ΠΈΠΆΡƒ Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… ΠΈ Π΄Π°ΠΆΠ΅(. ) Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ½ΠΈΠ³Π°Ρ….
ВсС Π»ΠΈ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π½Π° самом Π΄Π΅Π»Π΅ new ΠΈ delete? Или Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΡƒΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Π΅ΠΌ?
Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с этим (Π½Ρƒ, Π° Ρ‚Π΅, ΠΊΡ‚ΠΎ Π·Π½Π°ΡŽΡ‚, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ:))

Note: Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ± ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ new, для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° new ΠΈ для всСх Ρ„ΠΎΡ€ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° delete всС ниТСнаписанноС Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΏΡ€Π°Π²Π΄ΠΎΠΉ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ.

Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΈΡˆΡƒΡ‚ Π² ΠΊΠ½ΠΈΠ³Π°Ρ… для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ new (тСкст взят «с ΠΏΠΎΡ‚ΠΎΠ»ΠΊΠ°Β», Π½ΠΎ Π²Ρ†Π΅Π»ΠΎΠΌ соотвСтствуСт ΠΏΡ€Π°Π²Π΄Π΅):

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΡƒΡŽ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΈ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка Π‘, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструктор(Ρ‹) для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°(ΠΎΠ²), ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ выдСлСна… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ (Π³Π΄Π΅-Ρ‚ΠΎ ΠΏΠΈΡˆΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new ΠΏΠΎΠ΄ свои Π½ΡƒΠΆΠ΄Ρ‹.

И для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ (Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° new, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выглядит Ρ‚Π°ΠΊ
void* operator new (std::size_t size) throw (std::bad_alloc);

На Ρ‡Ρ‚ΠΎ хочСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:
1. НигдС Π½Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ new key-word языка Π‘++ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new, Π²Π΅Π·Π΄Π΅ ΠΎ Π½ΠΈΡ… говорят ΠΊΠ°ΠΊ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ сущности.
2. Π’Π΅Π·Π΄Π΅ ΠΏΠΈΡˆΡƒΡ‚, Ρ‡Ρ‚ΠΎ new Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструктор(Ρ‹) для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°(ΠΎΠ²).
И ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ являСтся распространСнным Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ.

Но Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ Π½Π° ΠΊΠ½ΠΈΠ³ΠΈ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, обратимся ΠΊ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρƒ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Ρƒ 5.3.4 ΠΈ ΠΊ 18.6.1, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… собствСнно ΠΈ раскрываСтся (Ρ‚ΠΎΡ‡Π½Π΅Π΅ приоткрываСтся) Ρ‚Π΅ΠΌΠ° Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

5.3.4
The new-expression attempts to create an object of the type-id (8.1) or new-type-id to which it is applied. /*дальшС Π½Π°ΠΌ Π½Π΅ интСрСсно*/
18.6.1
void* operator new(std::size_t size) throw(std::bad_alloc);
Effects: The allocation function called by a new-expression (5.3.4) to allocate size bytes of
storage suitably aligned to represent any object of that size /*дальшС Π½Π°ΠΌ Π½Π΅ интСрСсно*/

Π’ΡƒΡ‚ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС new имСнуСтся ΠΊΠ°ΠΊ expression, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ объявлСн ΠΊΠ°ΠΊ operator. И это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 2 Ρ€Π°Π·Π½Ρ‹Π΅ сущности!
ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ, для этого Π½Π°ΠΌ понадобятся ассСмблСрныС листинги, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ послС компиляции ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ new. Ну, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΠΎ всС ΠΏΠΎ порядку.

new-expression β€” это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ языка, Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ if, while ΠΈ Ρ‚.Π΄. (хотя if, while ΠΈ Ρ‚.Π΄. всС ΠΆΠ΅ ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ statement, Π½ΠΎ отбросим Π»ΠΈΡ€ΠΈΠΊΡƒ) Π’.Π΅. встрСчая Π΅Π³ΠΎ Π² листингС компилятор Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ этому ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ. Π’Π°ΠΊ ΠΆΠ΅ new β€” это ΠΎΠ΄Π½ΠΎ ΠΈΠ· key-words языка Π‘++, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π½ΠΎΡΡ‚ΡŒ с if‘Π°ΠΌΠΈ, for’Π°ΠΌΠΈ ΠΈ Ρ‚.ΠΏ. А operator new() Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ β€” это просто одноимСнная функция языка Π‘++, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ. Π’ΠΠ–ΠΠž β€” operator new() НЕ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструктор(Ρ‹) для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°(ΠΎΠ²), ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ(Ρ‹Π΅) выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ. Он просто выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ всС. Π•Π³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡΠΈΡˆΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ взятого класса, Ρ‚Π΅ΠΌ самым ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для этого класса (ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ вспомнитС сами:)).
А Π²ΠΎΡ‚ new-expression ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструктор(Ρ‹) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°(ΠΎΠ²). Π₯отя ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅ΠΉ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚, просто, встрСчая Π΅Π³ΠΎ, компилятор Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Π²Ρ‹Π·ΠΎΠ²Π° конструктора(ΠΎΠ²).

Для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

послС исполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ ΠΈ оТидалось, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ΠΎ Β«Foo()Β». РазбСрСмся ΠΏΠΎΡ‡Π΅ΠΌΡƒ, для этого понадобится Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² ассСмблСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» для удобства.
(ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ компилятором cl, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π² MSVS 2012, хотя Π² основном я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ gcc, Π½ΠΎ это ΠΊ Π΄Π΅Π»Ρƒ Π½Π΅ относится)

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ понял, Π²ΠΎΡ‚ (ΠΏΠΎΡ‡Ρ‚ΠΈ) Π°Π½Π°Π»ΠΎΠ³ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π½Π° сиподобном псСвдокодС (Ρ‚.Π΅. Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ это ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ :))

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ всС, написанноС Π²Ρ‹ΡˆΠ΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
1. ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (языка) new ΠΈ operator new() β€” это НЕ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅.
2. operator new() НЕ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструктор(Ρ‹)
3. Π²Ρ‹Π·ΠΎΠ² конструктора(ΠΎΠ²) Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ компилятор, встрСчая Π² ΠΊΠΎΠ΄Π΅ key-word Β«newΒ»

Π˜Ρ‚ΠΎΠ³: надСюсь, эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ new-expressionΠΈ operator new() ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° (эта Ρ€Π°Π·Π½ΠΈΡ†Π°) Π²ΠΎΠΎΠ±Ρ‰Π΅ сущСствуСт, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Π·Π½Π°Π».

P.S. ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ delete ΠΈ operator delete() ΠΈΠΌΠ΅ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅, поэтому Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ я сказал, Ρ‡Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Ρƒ Π΅Π³ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ. Π”ΡƒΠΌΠ°ΡŽ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ поняли, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΅Π³ΠΎ описаниС Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла ΠΈ смоТСтС ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎΡΡ‚ΡŒ написанного Π²Ρ‹ΡˆΠ΅ для delete.

Update:
Π₯Π°Π±Ρ€Π°ΠΆΠΈΡ‚Π΅Π»ΡŒ с Π½ΠΈΠΊΠΎΠΌ khim Π² Π»ΠΈΡ‡Π½ΠΎΠΉ пСрСпискС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠΎ дСмонстрируСт ΡΡƒΡ‚ΡŒ написанного Π²Ρ‹ΡˆΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

delete, new[] Π² C++ ΠΈ городскиС Π»Π΅Π³Π΅Π½Π΄Ρ‹ ΠΎΠ± ΠΈΡ… сочСтании

Если Π² ΠΊΠΎΠ΄Π΅ Π½Π° C++ Π±Ρ‹Π» создан массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Β«new[]Β», ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ этот массив Π½ΡƒΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Β«delete[]Β» ΠΈ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Β«deleteΒ» (Π±Π΅Π· скобок). Π Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ вопрос: Π° Π½Π΅ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ?

На этот вопрос ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡˆΠΈΡ€ΠΎΡ‡Π°ΠΉΡˆΠΈΠΉ спСктр Π½Π΅Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². НапримСр, Β«Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ‚Π΅ΠΊΡƒΡ‚Β» ΠΈΠ»ΠΈ Β«Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ дСструктор Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Β». Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° этим «объяснСния» Π½Π΅ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΈ.

Π’ соотвСтствии со Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΎΠΌ C++, Π² этой ситуации ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ. ВсС прСдполоТСния – Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ популярныС городскиС Π»Π΅Π³Π΅Π½Π΄Ρ‹. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

Нам понадобится Ρ…ΠΈΡ‚Ρ€Ρ‹ΠΉ ΠΏΠ»Π°Π½ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ ставил Π² Ρ‚ΡƒΠΏΠΈΠΊ сторонников городских Π»Π΅Π³Π΅Π½Π΄. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ Π±Π΅Π·ΠΎΠ±ΠΈΠ΄Π½Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΊ:

Π—Π΄Π΅ΡΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² массивС всСго ΠΎΠ΄ΠΈΠ½. Если Π²Π΅Ρ€ΠΈΡ‚ΡŒ любой ΠΈΠ· Π΄Π²ΡƒΡ… Π»Π΅Π³Π΅Π½Π΄ Π²Ρ‹ΡˆΠ΅, «всС Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎΒ» – ΡƒΡ‚Π΅ΠΊΠ°Ρ‚ΡŒ Π½Π΅Ρ‡Π΅ΠΌΡƒ ΠΈ Π½Π΅ΠΊΡƒΠ΄Π°, дСструкторов Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ΠΎ Ρ€ΠΎΠ²Π½ΠΎ сколько Π½ΡƒΠΆΠ½ΠΎ.

ИдСм Π½Π° codepad.org, вставляСм ΠΊΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΡƒ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²Ρ‹Π΄Π°Ρ‡Ρƒ:

MEMORY WHAT. Π§Ρ‚ΠΎ это Π±Ρ‹Π»ΠΎ?

Π—Π΄Π΅ΡΡŒ хотя Π±Ρ‹ с Π²ΠΈΠ΄Ρƒ всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π§Ρ‚ΠΎ происходит? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ происходит? ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ с Π²ΠΈΠ΄Ρƒ Ρ€Π°Π·Π½ΠΎΠ΅?

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ.

Когда Π² ΠΊΠΎΠ΄Π΅ встрСчаСтся Β«new Type[count]Β», ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° обязана Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ объСма, достаточного для хранСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ числа ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Для этого ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«operator new[]()Β». Π­Ρ‚Π° функция выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ – ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ просто Π²Ρ‹Π·ΠΎΠ² malloc() ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния (ΠΏΡ€ΠΈ нСобходимости – Π²Ρ‹Π·ΠΎΠ² new_handler() ΠΈ выброс ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ). Π—Π°Ρ‚Π΅ΠΌ Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ памяти ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ – вызываСтся Π½ΡƒΠΆΠ½ΠΎΠ΅ число конструкторов. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Β«new Type[count]Β» являСтся адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива.

Когда Π² ΠΊΠΎΠ΄Π΅ встрСчаСтся Β«delete[] pointerΒ», ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² массивС, Π²Ρ‹Π·Π²Π°Π² для Π½ΠΈΡ… дСструкторы. Для этого (ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для этого) Π΅ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ число элСмСнтов.

Π’Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚: Π² конструкции Β«new Type[count]Β» число элСмСнтов Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ явно, Π° Β«delete[]Β» ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта.

ΠžΡ‚ΠΊΡƒΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠ·Π½Π°Π΅Ρ‚ число элСмСнтов? Π Π°Π· Ρƒ Π½Π΅Π΅ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ массива Π½Π° основании ΠΎΠ΄Π½ΠΎΠ³ΠΎ этого адрСса. Как это дСлаСтся, зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ способ.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Β«new Type[count]Β» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдСляСт памяти ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½Π΅Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΈΡΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚ΠΈΠΏΠ° size_t), ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ число ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ Π½Π°Ρ‡Π°Π»ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ области ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ это число, дальшС Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΡ€ΠΈ компиляции Β«new Type[count]Β» вставляСт Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ эти свистСлки.

Π˜Ρ‚Π°ΠΊ, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Β«new Type[count]Β» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдСляСт Ρ‡ΡƒΡ‚ΡŒ большС памяти, записываСт число элСмСнтов Π² Π½Π°Ρ‡Π°Π»ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° памяти, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструкторы ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта. АдрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ адрСса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠ»Π° функция выдСлСния памяти Β«operator new[]()Β».

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Β«delete[]Β» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Π΅Ρ€Π΅Ρ‚ адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π² Β«delete[]Β», опрСдСляСт адрСс Π½Π°Ρ‡Π°Π»Π° Π±Π»ΠΎΠΊΠ° (вычитая Ρ€ΠΎΠ²Π½ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅, сколько Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Β«new[]Β»), Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ число элСмСнтов ΠΈΠ· Π½Π°Ρ‡Π°Π»Π° Π±Π»ΠΎΠΊΠ°, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎΠ΅ число дСструкторов, Π·Π°Ρ‚Π΅ΠΌ – Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«operator delete[]()Β», ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΉ адрСс Π½Π°Ρ‡Π°Π»Π° Π±Π»ΠΎΠΊΠ°.

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ с Ρ‚Π΅ΠΌ адрСсом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ выдСлСния памяти ΠΈ ΠΏΠΎΠ·ΠΆΠ΅ – ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ освобоТдСния памяти.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ. Когда выполняСтся Β«deleteΒ» (Π±Π΅Π· скобок), Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ понятия Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ со смСщСниСм адрСса. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ дСструктор СдинствСнного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«operator delete()Β» адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отличаСтся ΠΎΡ‚ Ρ€Π°Π½Π΅Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Β«operator new[]()Β».

Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ? Π’ этой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, это допустимо.

Для сравнСния, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° Visual C++ 9 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ исходит сообщСниями ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ вСрсии, Π½ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, функция _heapchk() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ _HEAP_OK, _CrtDumpMemoryLeaks() Π½Π΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сообщСний). Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ допустимо.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅? Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, компилятор ΡƒΡ‡Π΅Π», Ρ‡Ρ‚ΠΎ Ρƒ Ρ‚ΠΈΠΏΠ° char Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ дСструктор, Ρ‚.Π΅. Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ для Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° достаточно просто ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ, поэтому ΠΈ число элСмСнтов Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠΎΠΆΠ½ΠΎ сразу Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅Ρ€Π½ΡƒΠ»Π° функция Β«operator new[]()Β». Никаких смСщСний адрСса – Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Β«newΒ» (Π±Π΅Π· скобок). Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ компилятора ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствуСт Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρƒ.

Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΠΎ тСксту Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выдСлСния ΠΈ освобоТдСния памяти Ρ‚ΠΎ с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками, Ρ‚ΠΎ Π±Π΅Π·? Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ – это Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ°Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π”Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° компилятор пытаСтся ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ, ΠΎΠ½ всСгда Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«operator new[]()Β», ΠΊΠΎΠ³Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚ Π² ΠΊΠΎΠ΄Π΅ Β«new Type[count]Β», ΠΈ всСгда Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«operator new()Β», ΠΊΠΎΠ³Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚ Π² ΠΊΠΎΠ΄Π΅ Β«new TypeΒ».

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Β«operator new()Β» ΠΈ Β«operator new[]()Β» ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ (ΠΎΠ±Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ malloc()), Π½ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ – ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свои, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρƒ ΠΏΠ°Ρ€Ρƒ, Ρ‚Π°ΠΊ ΠΈ ΠΎΠ±Π΅, Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для любого Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ класса. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ позволяСт это Π΄Π΅Π»Π°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ (СстСствСнно, Π½ΡƒΠΆΠ½ΠΎ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ освобоТдСния памяти).

Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π±ΠΎΠ³Π°Ρ‚Ρ‹Π΅ возмоТности для Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ повСдСния. Если ваш ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ освобоТдаСтся Β«Π½Π΅ Ρ‚ΠΎΠΉΒ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ послСдствиям, Π² частности, ΠΊ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ ΠΊΡƒΡ‡ΠΈ, ΠΏΠΎΡ€Ρ‡Π΅ памяти ΠΈΠ»ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΌΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ рСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Β«operator delete()Β» Π½Π΅ смогла Ρ€Π°ΡΠΏΠΎΡ€ΡΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌ Π΅ΠΉ адрСсом ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ.

Бамая приятная Ρ‡Π°ΡΡ‚ΡŒ этого рассказа – Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ смоТСтС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ использованиС Β«deleteΒ» вмСсто Β«delete[]Β» (ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ – Ρ‚ΠΎΠΆΠ΅) ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ. Π”Π°ΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρƒ компилятор Π½Π΅ обязан Π²Ρ‹Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ. ПовСдСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π² коммСнтариях ΠΈ спорах, являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹ΠΌ – Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ всС Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ констатируСтС наблюдаСмоС Π²Π°ΠΌΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Π²ΠΈΠ΄Ρƒ всС Ρ…ΠΎΡ€ΠΎΡˆΠΎβ€¦ Π½Π° этой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. На Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Β«operator new()Β» ΠΈ Β«operator new[]()Β» ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΡƒΡ‡Π°Ρ… (Windows позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΡƒΡ‡ΠΈ Π½Π° процСсс). Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊ Β«Π½Π΅ Π² Ρ‚ΡƒΒ» ΠΊΡƒΡ‡Ρƒ?

ΠšΡΡ‚Π°Ρ‚ΠΈ, рассчитывая Π½Π° ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² этой ситуации, Π²Ρ‹ автоматичСски ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ нСпСрСносимый ΠΊΠΎΠ΄. Π”Π°ΠΆΠ΅ Ссли Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ «всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Β», ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ компилятор, ΠΏΡ€ΠΈ смСнС вСрсии компилятора ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ C++ runtime Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½Π΅ нСприятно ΡƒΠ΄ΠΈΠ²Π»Π΅Π½Ρ‹.

Как Π±Ρ‹Ρ‚ΡŒ? Π‘ΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ, Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ Β«deleteΒ» ΠΈ Β«delete[]Β» ΠΈ самоС Π³Π»Π°Π²Π½ΠΎΠ΅ – Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ зря врСмя Π½Π° Β«ΠΏΡ€Π°Π²Π΄ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅Β» объяснСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ якобы ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π²Ρ‹ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π΅Ρ‚Π΅. Пока Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, Π° для вас Π±ΡƒΠ΄Π΅Ρ‚ расти Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π·Π°ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΌΠΈΡŽ Π”Π°Ρ€Π²ΠΈΠ½Π°.

Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ ΠœΠ΅Ρ‰Π΅Ρ€ΡΠΊΠΎΠ²
Π”Π΅ΠΏΠ°Ρ€Ρ‚Π°ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

Delete: To completely erase something.
Remove: To put away. (but it hasn’t been erased.)
Clear: To free or rid something of another thing.

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

Delete: To completely erase something.
Remove: To put away. (but it hasn’t been erased.)
Clear: To free or rid something of another thing.

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

They all mean the same thing but delete is more something you say where it relates to computers.
I should delete these old files.
Remove and clear are pretty similar. Feel free to use either

Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ знания ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ вас языка ΠΈ Π²Π°ΡˆΡƒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ. Выбирая ваш ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ знания языка, Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΊΠ°ΠΊ ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡ… ΠΏΠΎΠ½ΡΡ‚ΡŒ.

МнС Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ языкС.

ΠœΠΎΠ³Ρƒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ простыС вопросы ΠΈ понимаю простыС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹.

ΠœΠΎΠ³Ρƒ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π²ΠΈΠ΄Ρ‹ ΠΎΠ±Ρ‰ΠΈΡ… вопросов. Понимаю ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ срСднСй Π΄Π»ΠΈΠ½Ρ‹ ΠΈ слоТности.

Понимаю ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ любой Π΄Π»ΠΈΠ½Ρ‹ ΠΈ слоТности.

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete

Π Π΅ΡˆΠ°ΠΉΡ‚Π΅ свои ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΡ‰Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ!

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ delete ΠΈ delete( 30 698 )

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *