Translate

viernes, 14 de julio de 2023

Comparación de Gestión de memoria con Rust


Siguiendo con el post anterior. Una comparación aproximada de las técnicas de administración de memoria.

Ventajas de las diferentes técnicas de gestión de la memoria

  • Manual como C:
    • Sin sobrecarga de tiempo de ejecución.
  • Automático como Java:
    • Completamente automático.
    • Seguro y correcto.
  • Basado en el alcance como C++:
    • Parcialmente automático.
    • Sin sobrecarga de tiempo de ejecución.
  • Basado en el alcance aplicado por el compilador como Rust:
    • Aplicado por el compilador.
    • Sin sobrecarga de tiempo de ejecución.
    • Seguro y correcto.

Contras de las diferentes técnicas de gestión de memoria

  • Manual como C:
    • Use-After-Free
    • Liberaciones dobles.
    • Pérdidas de memoria en caso de error.
  • Automático como Java:
    • Las pausas del recolector de basura.
    • Retrasos en la liberación de memoria.
  • Basado en el alcance como C++:
    • Complejo, opt-in por el programador.
    • Potencial Use-After-Free
  • Reforzado por el compilador y basado en el alcance como Rust:
    • Cierta complejidad inicial.
    • Puede rechazar programas válidos.
Use-After-Free (UAF) es una vulnerabilidad relacionada con el uso incorrecto de la memoria dinámica durante la operación del programa. Si después de liberar una ubicación de memoria, un programa no borra el puntero a esa memoria, un atacante puede usar el error para piratear el programa.