Tengo una comprensión básica de RAII. Me lo presentaron en el libro de Scott Meyers: C ++ efectivo: 55 formas específicas de mejorar sus programas y diseños. Es una técnica para garantizar la disponibilidad y eliminación de memoria asignada dinámicamente.
En lenguajes como C ++ donde la memoria es administrada por el programador, las técnicas RAII pueden ayudar a evitar el olvido de reclamar la memoria señalada por un puntero (por una llamada para delete
). Las técnicas RAII como los punteros inteligentes (puntero inteligente) envuelven un recurso asignado dinámicamente y eliminan el recurso asignado dinámicamente en el destructor. Dado que se creará una instancia de un puntero inteligente en la pila, se llama al destructor cuando sale del alcance.
La página de Wikipedia muestra cómo se usan, pero no cómo se pueden implementar. Aquí hay un ejemplo extremadamente simplificado. Tenga en cuenta que mi ejemplo está incompleto y no he escrito C ++ hace algún tiempo, pero la idea general es que algo administre la vida útil del recurso.
- ¿Por qué no hicieron que las computadoras entendieran todos los números decimales, no solo dos?
- ¿Por qué la continuidad de la recta numérica real nunca puede existir en las matemáticas?
- ¿Cómo detectan las cámaras de vigilancia del aeropuerto un comportamiento sospechoso?
- ¿Cómo se puede resolver la enfermedad de la realidad virtual?
- ¿Cuál es el mejor libro para aprender hardware y software de computadora?
plantilla
clase SmartPointer
{
privado:
T * tPointer;
público:
SmartPointer (T t)
{
this-> tPointer = new T (t);
}
SmartPointer (T * const y tPointer)
{
this-> tPointer = tPointer;
}
~ SmartPointer ()
{
eliminar tPointer;
}
};
int main ()
{
SmartPointer smpt (nuevo int (10));
SmartPointer smpt2 (2.2);
}
Estoy seguro de que hay algunas respuestas más científicas y teóricas a lo que es RAII, pero este es el contexto con el que estoy familiarizado.