Lifetime define durante cuánto tiempo la variable sería válida, es decir, sería existente y se puede usar de forma segura. Por ejemplo, todas las variables definidas dentro de una función tienen una vida útil que se extiende dentro del cuerpo de esa función, y luego existen desde el momento en que la función comienza a ejecutarse y hasta que la función termina su ejecución. Estas variables se asignan memoria en la pila, la pila se desenrolla al regresar de una función y, por lo tanto, estas variables se destruyen en ese momento
Por ex
Vacío foo ()
{
int a = 0;
a = a + 10
cout >> a;
}
- ¿Por qué las máquinas de Turing son un equivalente teórico tan prolífico de lo que puede hacer una computadora real?
- Cómo calcular el área debajo de y = cosx [0, pi / 2] en C
- En términos simples, ¿qué es el algoritmo Z?
- ¿P es igual a DTIME (2 ^ n)?
- ¿Cuál es el polinomio más pequeño que puede atravesar todos los conjuntos de n puntos? ¿Hay uno?
En la función anterior, el entero a se crea tan pronto como se llama a la función y se destruye después de que se ejecuta la última instrucción. Es por eso que si devuelve la dirección de a de esta función e intenta usarla, vería un comportamiento indefinido ya que la memoria utilizada por a ya está marcada para su eliminación.
Sin embargo, las variables estáticas y las variables asignadas a la memoria dinámicamente no se asignan en la pila y, por lo tanto, su vida útil es mayor que la vida útil del método en el que se llaman. Devolver las direcciones fuera de una función es válido ya que no dejan de existir en el retorno de la función
int * foo ()
{
int a = 10;
estático int b = 10;
// volver & a; // daría como resultado un comportamiento indefinido
volver & b; // está bien
}