Introducción a Patrones de Diseño en C++ con Qt4/1.16.2 Operadores new y delete
1.16.2. Operadores new y delete
editarC++ cuenta con un mecanismo que permite almacenar para ser alojado dinámicamente en tiempo de ejecución. Esto significa que el programador no necesita anticipar las necesidades de memoria de un programa en avance y hacer estimaciones del máximo monto de memoria que podría ser necesitada por el programa. La alocación dinámica de almacenamiento en tiempo de ejecución es una herramienta poderosa que ayuda a construir programas que sean eficientes y flexibles.
El operador new asigna almacenamiento desde el montón (también conocido como almacenamiento dinámico) y devuelve un puntero del objeto resultante. Si por alguna razón no le es posible a la memoria el asignarlo, una excepción es producida. (Sección 21.9)
El operador delete libera la memoria asignada dinámicamente y la regresa al montón. delete debiera ser aplicado a punteros devueltos por new, o para punteros nulos. La memoria del montón que no se necesitará más debiera ser liberada para su reúso. Olvidar esto puede resultar en deformes pérdidas de memoria.
La sintaxis de los operadores new y delete es demostrada en el fragmento de código del Ejemplo 1.24.
Ejemplo 1.24
editarint* ip = 0; puntero nulo
ip = new int; espacio asignado por un int
int* jp = new int(13); asignado e inicializado
delete ip; Sin esto, tenemos una pérdida de memoria.
{ int* ip = 0; ip = new int; int* jp = new int(13); [...] delete ip; delete jp; }