En programación, un registro sin salida ( ing. Dead Store ) es la asignación de un valor a una variable local si ninguna de las instrucciones posteriores lee este valor. Las escrituras de interbloqueo ocupan tiempo de CPU y memoria y no hacen nada. Se pueden descubrir mediante el análisis de código estático .
Un código de ejemplo con una entrada sin salida en Java:
// DeadStoreExample.java import java.util.ArrayList ; importar java.util.List ; public class DeadStoreExample { public static void main ( String [] args ) { List < String > list = new ArrayList < String > (); // Esta asignación es un resguardo ya que ArrayList nunca se lee. lista = obtenerLista (); sistema _ fuera _ println ( lista ) } Lista estática privada < String > getList () { return new ArrayList < String > ( "hola" ); } }En este ejemplo, se creó una instancia de un objeto ArrayList<String> pero nunca se usó. En cambio, a la variable que hacía referencia a ella se le asignó una referencia a otro objeto. El área de memoria que se asignó cuando se declaró el ArrayList debe liberarse, por ejemplo, utilizando el recolector de basura .
Un código de ejemplo con una entrada sin salida en JavaScript:
función func ( a , b ) { var x ; var i = 300 ; mientras que ( yo -- ) { x = a + b ; // entrada sin salida } }Este ejemplo sobrescribe la misma variable local varias veces en un bucle . Mientras que solo el valor escrito en la última iteración se puede usar en el programa después de este bucle . Por lo tanto, todas las escrituras en la variable x, excepto la última, son callejones sin salida.
En un compilador de optimización, la eliminación de registros sin salida se puede realizar optimizando la eliminación de código muerto [1] u optimizando la eliminación de registros sin salida ( ing. Dead Store Elimination ) [2] .