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

ПониманиС ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ этой ошибки критичСски Π²Π°ΠΆΠ½ΠΎ для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ Π² 1Π‘ начинаСтся с нуля, ΠΈ это ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± ошибкС Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ рСгистрации ΠΈΠ»ΠΈ Π½Π° экранС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π°Ρ€ΡƒΡˆΠΈΠ»Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ памяти для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ….

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

ΠœΠ΅Ρ…Π°Π½ΠΈΠΊΠ° возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² срСдС выполнСния

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π³Ρ€Π°Π½ΠΈΡ† массивов для обСспСчСния цСлостности Π΄Π°Π½Π½Ρ‹Ρ…. Когда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ массив, систСма Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ памяти ΠΏΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство элСмСнтов. Доступ ΠΊ этим элСмСнтам осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· числовой индСкс. Ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ пытаСтся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ адрСсу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ физичСски Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π΄Π°Π½Π½ΠΎΠΌΡƒ массиву.

Π§Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° кроСтся Π² нСсовпадСнии ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ количСства элСмСнтов с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ. НапримСр, Ссли массив Π±Ρ‹Π» создан с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 5 элСмСнтов, допустимыС индСксы Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ 0 Π΄ΠΎ 4. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° обращСния ΠΊ элСмСнту с индСксом 5 ΠΈΠ»ΠΈ -1 ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π‘Ρ€Π΅Π΄Π° выполнСния Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ памяти сосСдних ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² 1Π‘ массивы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ динамичСскими. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если Π² сСрСдинС Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассчитан Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ 100 элСмСнтов, ΠΈΠ· массива удалится хотя Π±Ρ‹ ΠΎΠ΄Π½Π° запись, счСтчик Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ИмСнно такая рассинхронизация состояния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ являСтся Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ сбоСв.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ измСняйтС состав массива (ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов) Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ этому ΠΆΠ΅ массиву с использованиСм числового индСкса. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС индСксации ΠΈΠ»ΠΈ пропуску элСмСнтов.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ... Из ..." вмСсто Ρ†ΠΈΠΊΠ»ΠΎΠ² с числовым индСксом, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ просто ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ элСмСнты. Π­Ρ‚ΠΎ автоматичСски Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ ΠΊΠΎΠ΄ ΠΎΡ‚ ошибок Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии ошибок Π² цикличСских конструкциях

Анализ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ программирования Π² 1Π‘ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ случаСв Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива связано с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ†ΠΈΠΊΠ»ΠΎΠ². Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ТСстко Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ числа вмСсто динамичСского получСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ опасСн Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ написания ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π΅Π³ΠΎ исполнСния.

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

  • πŸ”΄ ИспользованиС магичСских чисСл вмСсто ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π² условии Ρ†ΠΈΠΊΠ»Π°.
  • πŸ”΄ ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Для Π½ = 0 По ... Π¦ΠΈΠΊΠ».
  • πŸ”΄ ΠžΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ расчСт индСкса ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ структурами Π΄Π°Π½Π½Ρ‹Ρ….
  • πŸ”΄ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° доступа ΠΊ элСмСнту пустого массива Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΡΡ‚ΡŒ.

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

πŸ“Š Как Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ массивы Π² 1Π‘?
Π¦ΠΈΠΊΠ» "Для Π½ = 0 По ..."
Π¦ΠΈΠΊΠ» "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ... Из"
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° "Запрос"
РСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄

Диагностика ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

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

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом являСтся Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прСдприятия с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€. УстановитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова (breakpoint) ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹ΠΌ мСстом ошибки. ПошаговоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° индСкс Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° допустимыС ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹.

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ слСдуСт ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠΊΠ½Ρƒ "НаблюдСниС". Π”ΠΎΠ±Π°Π²ΠΈΠ² Ρ‚ΡƒΠ΄Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-счСтчик ΠΈ сам массив, Π²Ρ‹ смоТСтС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… состояниС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика становится Ρ€Π°Π²Π½Ρ‹ΠΌ количСству элСмСнтов, Π° Ρ†ΠΈΠΊΠ» Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, Π·Π½Π°Ρ‡ΠΈΡ‚, Π»ΠΎΠ³ΠΈΠΊΠ° условия продолТСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Ρ€ΡƒΡˆΠ΅Π½Π°.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ НазначСниС Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ
Π’ΠΎΡ‡ΠΊΠΈ останова ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° выполнСния Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ строкС Высокая
ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° строка Π·Π° строкой Максимальная
Окно наблюдСний ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Высокая
Π–ΡƒΡ€Π½Π°Π» рСгистрации Анализ ошибок Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π±Π°Π·Π΅ БрСдняя

Если воспроизвСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ Π½Π΅ удаСтся ΠΈΠ·-Π·Π° спСцифики Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ... Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° ошибки ΠΈ записи ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π»ΠΎΠ³. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ состоянии систСмы нСпосрСдствСнно Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ сбоя Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π±Π°Π·Π΅.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° с коллСкциями ΠΈ массивами

Для прСдотвращСния ошибок индСксации Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ строгий ΡΡ‚ΠΈΠ»ΡŒ программирования ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с коллСкциями. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ прСдоставляСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² структур Π΄Π°Π½Π½Ρ‹Ρ…: массивы, списки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности индСксации, Π½ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ бСзопасности ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π΅Π΄ΠΈΠ½Ρ‹ΠΌΠΈ.

ВсСгда провСряйтС массив Π½Π° пустоту ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π”Π°ΠΆΠ΅ Ссли ΠΏΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ бизнСс-процСсса массив Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, внСшниС Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π°Π²Π° доступа ΠΈΠ»ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΎΡ‚Π±ΠΎΡ€Π°) ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ окаТСтся пустым. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½ΡƒΠ»Π΅Π²ΠΎΠΌΡƒ элСмСнту пустого массива Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ.

β˜‘οΈ БСзопасная Ρ€Π°Π±ΠΎΡ‚Π° с массивами

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ остороТны. Ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π½Π΅ Π² основном Ρ†ΠΈΠΊΠ»Π΅, Π° Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ, Π³Π΄Π΅ индСксация зависит ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² внСшнСго Ρ†ΠΈΠΊΠ»Π°. Π’Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, поэтому рСкомСндуСтся Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… структур Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ВсСгда ΡΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ΡΡŒ с синтаксичСским ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ вСрсии 1Π‘, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² коррСктности использования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

ИспользованиС конструкции ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°-Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Π‘Π»ΠΎΠΊ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сбой. Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π² Π±Π»ΠΎΠΊ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΆΡƒΡ€Π½Π°Π», ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ сцСнарий. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников, Π³Π΄Π΅ структура ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСпрСдсказуСмой.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Массив[ИндСкс];

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Ошибка доступа ΠΊ элСмСнту: " + ОписаниСОшибки());

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = НСопрСдСлСно;

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

Однако Π½Π΅ стоит Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ этим ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. ИспользованиС ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°-Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ интСнсивных Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² 1Π‘ являСтся достаточно тяТСловСсной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. Π›ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ логичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ, Ρ‡Π΅ΠΌ Π»ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ постфактум.

ВлияниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² 1Π‘ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ обычная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условия "Если". Π’ Ρ†ΠΈΠΊΠ»Π°Ρ… с тысячами ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ использованиС ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°-Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Ρ€Π°Π·Ρ‹.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π’Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Бписками

Помимо ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… массивов, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π’Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Бписками Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ индСксный доступ, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ свою спСцифику. НапримСр, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ строки ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ индСксы всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… строк, Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнтов ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π² Ρ†ΠΈΠΊΠ»Π΅ рСкомСндуСтся ΠΈΠ΄Ρ‚ΠΈ ΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π° ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ. Π’ этом случаС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта Π½Π΅ влияСт Π½Π° индСксы Ρ‚Π΅Ρ… элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ прСдстоит ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ бСзопасного удалСния, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования ΠΈ Π² 1Π‘ Π² частности.

  • βœ… Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ˜Π½Π΄Π΅ΠΊΡΡƒ для бСзопасного поиска.
  • βœ… ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» с шагом -1.
  • βœ… Для списков Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.
  • βœ… ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ сущСствованиС строки ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π΅Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ.

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

πŸ’‘

Π¦ΠΈΠΊΠ» Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС (ΠΎΡ‚ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ()-1 Π΄ΠΎ 0) β€” СдинствСнно Π²Π΅Ρ€Π½Ρ‹ΠΉ способ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎ индСксу Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π±Π΅Π· риска сдвига Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка, Ссли массив Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½?

Π”Π°ΠΆΠ΅ Ссли массив Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² процСссС выполнСния ΠΊΠΎΠ΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ»ΠΈ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎ состав массива. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ пСрСмСнная, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΊΠ°ΠΊ индСкс, содСрТит Π½Π΅ Ρ†Π΅Π»ΠΎΠ΅ число, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠ° Π΄Π°Π»ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Как быстро Π½Π°ΠΉΡ‚ΠΈ строку с ошибкой Π² большом ΠΌΠΎΠ΄ΡƒΠ»Π΅?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ "Π’Ρ‹Π·ΠΎΠ²Ρ‹". ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки систСма подсвСтит строку. Если ошибка ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π° ΠΈ Π½Π΅ Π²ΠΈΠ΄Π½Π° сразу, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄Π° Π½ΠΎΠΌΠ΅Ρ€Π° строки ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΆΡƒΡ€Π½Π°Π» рСгистрации с Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π΄ΠΎ уровня строки ΠΊΠΎΠ΄Π°.

МоТно Π»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ† массива для скорости?

НСт, Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π½Π΅Ρ‚ возмоТности ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ† массива. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ бСзопасности, Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ систСмы ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ?

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… настройках ΠΎΡ‚Π±ΠΎΡ€Π° ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²Π°Ρ… доступа этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊ Π½Π΅ΠΌΡƒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ пустой ΠΈΠ»ΠΈ усСчСнный Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° доступа ΠΈ настройки Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ВлияСт Π»ΠΈ вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° частоту этой ошибки?

Π’ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π½ΠΎ логичСскиС ошибки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Однако Π½ΠΎΠ²Ρ‹Π΅ вСрсии ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ понятныС сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ инструмСнты ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ для ΠΈΡ… поиска.