Creación de una matriz 2D ordinaria
La siguiente declaración crea una matriz 2D ordinaria:
cadena arr2d [] [5] = "aa", "ab", "ac", "ad", "ae",Si esta matriz se crea en el alcance global, no se puede usar (e.gramo. reasignó un valor de elemento) en el alcance global. Sin embargo, puede tener cualquiera de sus elementos reasignado un valor en los otros ámbitos.
Para que elimine esta matriz, solo déjelo salir del alcance. Si se creara en un alcance que no sea el alcance global, saldría del alcance al final de su bloque (). Si se creó en el alcance global, solo saldría del alcance al final del programa.
Matriz 2D de tienda gratis
La siguiente declaración muestra cómo la matriz anterior pero con un nombre de puntero diferente se puede crear dinámicamente en la tienda gratuita:
String (*ptr2d) [5] = nueva cadena [5] [5] "aa", "ab", "ac", "ad", "ae",Tenga en cuenta cómo se ha creado la matriz 2D con el nuevo operador. El nombre de la matriz, es ptr2d.
Si esta matriz se crea en el alcance global, no se puede usar (e.gramo. reasignó un valor de elemento) en el alcance global. Sin embargo, puede tener cualquiera de sus elementos, reasignado un valor en los otros ámbitos.
Para eliminar esta matriz, use el operador eliminar [], como se muestra a continuación. La matriz en la tienda libre no se puede eliminar realmente dejándolo salir del alcance. Debe eliminarse con el operador Eliminar [], en su alcance, para liberar la memoria.
Contenido del artículo
- Introducción - Ver arriba
- Eliminar una matriz ordinaria 2D
- Eliminar la matriz de puntero 2D creada dinámicamente de la tienda gratuita
- Conclusión
Eliminar una matriz ordinaria 2D
Una matriz ordinaria bidimensional se elimina simplemente dejando que salga del alcance. El siguiente programa ilustra esto con un alcance anidado:
#incluirLa salida es, BB. La construcción if tiene un bloque que es el alcance anidado. La matriz se detiene al final del bloque. Hay un indicador de comentarios, justo debajo del bloque, en el programa. Si se elimina, el programa no se compilará y se emitirá un mensaje de error. Esto resulta del hecho de que la matriz 2D está muerta al final del bloque.
En el siguiente programa, la matriz 2D ordinaria declarada en el cuerpo de funciones, muere al final del bloque de funciones:
#incluirLa salida está quieta, BB. Hay un indicador de comentarios justo debajo del bloque de funciones en el programa. Si se elimina, el programa no se compilará y se emitirá un mensaje de error. Esto resulta del hecho de que la matriz 2D está muerta al final del bloque. También recuerde que, la asignación de un valor a un elemento 2D, después de la declaración, no está permitida en el alcance global.
Eliminar la matriz de puntero 2D creada dinámicamente de la tienda gratuita
La asignación después de la declaración no está permitida en el alcance global. Por lo tanto, es conveniente tener una declaración de matriz 2D, en un alcance anidado, en la función principal de C ++, por razones pedagógicas.
Una matriz bidimensional, declarada en la forma anterior, se elimina con la sintaxis, "Eliminar [] 2Darray". Esta eliminación debe tener lugar en su alcance para liberar la memoria y evitar la fuga de memoria. El siguiente programa ilustra esto, con un alcance anidado:
#incluirLa salida es, aa, de ptr2d [0] [0]. Después de la eliminación, ptr2d [0] [0] no devuelve nada. Aunque los otros elementos como Ptr2d [1] [1] aún devolverían un valor, la matriz se considera eliminada.
Matriz de tienda gratuita 2D como puntero-to-pointer
Se puede crear una matriz 2D como un puntero a punto. En este caso, todas las filas deberán eliminarse primero antes de que se elimine la matriz unidimensional restante. El siguiente programa ilustra esto en la función principal de C ++:
#incluirLa salida es BB antes de eliminar. Después de eliminar, el valor de retorno de ptr2d [1] [1] no es nada.
Ahora, esta matriz 2D de puntero en la tienda gratuita es una matriz unidimensional de puntero, de matrices de puntero. Entonces, para eliminar la matriz 2D en la tienda gratuita, todas las filas deben eliminarse primero con Delete [] antes de que se elimine la matriz de puntero unidimensional principal. Esto utiliza el esquema del operador Eliminar [] para una matriz 2D en la tienda gratuita.
Inclusión de la biblioteca
El operador nuevo y deletero, en realidad se definen en la biblioteca. Sin embargo, incluida esta biblioteca es opcional.
Conclusión
Para eliminar una matriz ordinaria 2D, solo déjala salir del alcance. Si la matriz 2D está en la tienda gratuita, entonces debe eliminarse con el operador Eliminar [] para la memoria libre en el alcance en el que se declara. Si la matriz 2D en la tienda gratuita se creó con una sintaxis convencional, entonces un simple "Eliminar [] 2DarrayName" sería para eliminar. Si se creó como un puntero a punto, entonces las filas deberán eliminarse primero con "Eliminar [] 2DarrayName [i]" y luego la matriz 1D restante (sin elementos), se elimine con "Delete [] 2DarrayName ".