Liberación automática de memoria de objetos singleton en C ++
El patrón singleton es un patrón muy común en diseño. Un objeto es creado por la función estática. Todos los datos futuros son operados por esta función para mantener los datos únicos. También es muy conveniente de usar, pero hay un pequeño problema. Es el problema de la liberación de un solo objeto. Generalmente, liberamos objetos de manera uniforme cuando el programa sale, pero esto no es particularmente perfecto. A veces puede olvidarse de llamar, y luego ocurre una pérdida de memoria. Por supuesto, los sistemas operativos modernos Este programa administra la memoria. Cuando el programa se destruye, los recursos de memoria creados por este programa se reciclarán, pero este es el caso. Por supuesto, aún debemos escribir programas que no pierdan memoria.
Como todos sabemos, el lenguaje C ++ no tiene un mecanismo de recolección de basura en otros lenguajes. Los programadores necesitan administrar manualmente la memoria. El puntero es muy poderoso, pero cuando la operación no es buena, también es fácil causar problemas ... Lo siguiente proporciona una memoria automática para objetos únicos. El método de liberación se puede usar en la programación, es muy conveniente, lo más importante es que la memoria se puede liberar automáticamente :-)
1 2 3 4 4 5 5 6 6 7 7 8 9 9 10 11 12 13 14 15 dieciséis 17 18 años 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|
Más arriba,
explique que la razón por la cual este código puede lograr la liberación automática de memoria se debe al uso de un truco: el m_auto definido con la clase interna anterior es una variable estática, y el sistema operativo llama a la generación y liberación de variables estáticas. , Para que cuando se destruya m_auto, ingrese automáticamente el destructor de m_auto, es decir, el destructor de la clase AutoRelease. Realizamos la operación de liberar el objeto singleton en esta función, para que pueda liberar automáticamente
ps: "vld "h" es un complemento que detecta fugas de memoria. Puede mostrar información relevante sobre fugas de memoria en la ventana de salida de la consola después de ejecutar el programa. Dirección de descarga: http://www.codeproject.com/Articles/9815/Visual-Leak- Detector-mejorado-memoria-fuga-detección