Återvändsgränd

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 19 december 2020; kontroller kräver 2 redigeringar .

I programmering är en återvändsgränd post ( eng.  Dead Store ) tilldelningen av ett värde till en lokal variabel om detta värde inte läses av någon av de efterföljande instruktionerna. Deadlock-skrivningar tar upp CPU-tid och minne och gör ingenting. De kan upptäckas med statisk kodanalys .

Ett exempel på kod med en återvändsgränd i Java:

// DeadStoreExample.java import java.util.ArrayList ; importera java.util.List ; public class DeadStoreExample { public static void main ( String [] args ) { List < String > list = new ArrayList < String > (); // Den här uppgiften är en stubb eftersom ArrayList aldrig läses. list = getList (); System . ut . println ( lista ) } privat statisk lista < String > getList () { return new ArrayList < String > ( "hej" ); } }

I det här exemplet instansierades ett ArrayList<String>-objekt men användes aldrig. Istället tilldelades variabeln som refererade till den en referens till ett annat objekt. Minnesområdet som tilldelades när ArrayList deklarerades måste frigöras, till exempel genom att använda garbage collector .

Ett exempel på kod med en återvändsgränd i JavaScript:

function func ( a , b ) { var x ; var i = 300 ; medan ( i -- ) { x = a + b ; // återvändsgränd post } }

Detta exempel skriver över samma lokala variabel flera gånger i en loop . Medan endast det värde som skrevs vid den senaste iterationen kan användas i programmet efter denna loop . Alltså alla skrivningar till variabeln x, förutom den sista, är återvändsgränder.

I en optimeringskompilator kan borttagningen av återvändsgränd-poster göras genom att optimera borttagningen av död kod [1] eller genom att optimera borttagningen av återvändsgränd-poster ( eng.  Dead Store Elimination ) [2] .

Anteckningar

  1. HTML5 och Real World Site Performance: Seventh IE9 Platform Preview tillgänglig för utvecklare (länk ej tillgänglig) . Hämtad 7 augusti 2021. Arkiverad från originalet 29 januari 2013. 
  2. Michael Howard, David Leblanc Skriver säker kod  (inte tillgänglig länk)