Jump to content

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

(Перенаправлено из мертвой переменной )

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

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

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

// DeadStoreExample.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class DeadStoreExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>(); // This is a Dead Store, as the ArrayList is never read. 
        list = getList();
        System.out.println(list);
    }

    private static List<String> getList() {
        return new ArrayList<String>(Arrays.asList("Hello"));
    }
}

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

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

function func(a, b) {
    var x;
    var i = 300;
    while (i--) {
        x = a + b; // dead store
    }
}

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

См. также

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