Jump to content

Мертвый магазин

В компьютерном программировании «мертвое» хранилище это локальная переменная , которой присвоено значение , но которая не считывается последующей инструкцией . Мертвые хранят впустую процессорное время и память и могут быть обнаружены с помощью статического анализа программы и удалены оптимизирующим компилятором .

Если целью хранилища является преднамеренная перезапись данных, например, когда пароль удаляется из памяти, оптимизация неработающего хранилища может привести к тому, что запись не произойдет, что приведет к проблеме безопасности. [1] Некоторые системные библиотеки имеют специальные функции, предназначенные для предотвращения таких опасных оптимизаций, например explicit_bzero на OpenBSD . [2]

Пример мертвого хранилища на Java :

// DeadStoreExample.java  import   java.util.ArrayList  ;  импортировать   java.util.Arrays  ;  импортировать   java.util.List  ;  общественный   класс   DeadStoreExample   {      public   static   void   main  (  String  []   args  )   {          List  <  String  >   list   =   new   ArrayList  <  String  >  ();   // Это мертвое хранилище, поскольку ArrayList никогда не читается.          список   =   получить список  ();          Система  .  вне  .  println  (  список  );      }      Private   static   List  <  String  >   getList  ()   {          return   new   ArrayList  <  String  >  (  Arrays  .  asList  (  "Hello"  ));      }  } 

В приведенном выше коде ArrayList<String> объект был создан, но никогда не использовался. Вместо этого в следующей строке переменная, которая ссылается на нее, указывается на другой объект. ArrayList который был создан, когда list был объявлен, теперь его необходимо будет освободить, например, с помощью сборщика мусора .

Пример мертвого хранилища в JavaScript :

функция   func  (  a  ,   b  )   {      var   x  ;      вар   я   =   300  ;      в то время как   (  я  --  )   {          Икс знак   равно   а   +   б  ;   // мертвый магазин      }  } 

Код в цикле неоднократно перезаписывает одну и ту же переменную, поэтому его можно сократить до одного вызова. [3]

См. также

[ редактировать ]
  1. ^ «Небезопасная оптимизация компилятора | OWASP» .
  2. ^ «Страницы руководства OpenBSD» . man.openbsd.org . Проверено 14 мая 2016 г.
  3. ^ «HTML5 и реальная производительность сайта: седьмая предварительная версия платформы IE9 доступна для разработчиков» .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a767333b407d8ff7a7675c1313772c0e__1708530180
URL1:https://arc.ask3.ru/arc/aa/a7/0e/a767333b407d8ff7a7675c1313772c0e.html
Заголовок, (Title) документа по адресу, URL1:
Dead store - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)