Criação de matriz 2D comum
A declaração a seguir, cria uma matriz 2D comum:
String arr2d [] [5] = "aa", "ab", "ac", "ad", "ae",Se essa matriz for criada no escopo global, ela não poderá ser usada (e.g. reatribuir um valor de elemento) no escopo global. No entanto, pode ter algum de seus elementos transferindo um valor nos outros escopos.
Para excluir esta matriz, deixe -a sair do escopo. Se fosse criado em um escopo que não seja o escopo global, sairia do escopo no final de seu bloco (). Se fosse criado no escopo global, só sairia do escopo no final do programa.
Array 2D de loja grátis
A declaração a seguir mostra como a matriz acima, mas com um nome de ponteiro diferente pode ser criado dinamicamente na loja gratuita:
String (*ptr2d) [5] = new String [5] [5] "aa", "ab", "ac", "ad", "ae",Observe como a matriz 2D foi criada com o novo operador. O nome da matriz é ptr2d.
Se essa matriz for criada no escopo global, ela não poderá ser usada (e.g. reatribuir um valor de elemento) no escopo global. No entanto, pode ter algum de seus elementos, transferindo um valor nos outros escopos.
Para excluir esta matriz, use o operador Excluir [], como mostrado abaixo. A matriz na loja gratuita não pode realmente ser excluída, deixando -a sair do escopo. Ele deve ser excluído com o operador excluir [] em seu escopo, a fim de liberar memória.
Conteúdo do artigo
- Introdução - Veja acima
- Excluindo uma matriz comum 2D
- Excluindo dinamicamente criada a matriz de ponteiro 2D da loja gratuita
- Conclusão
Excluindo uma matriz comum 2D
Uma matriz comum bidimensional é excluída apenas deixando-a sair do escopo. O programa a seguir ilustra isso com um escopo aninhado:
#incluirA saída é, BB. O consumo IF tem um bloco que é o escopo aninhado. A matriz para existir no final do bloco. Há um indicador de comentários, logo abaixo do bloco, no programa. Se for removido, o programa não será compilado e uma mensagem de erro será emitida. Isso resulta do fato de a matriz 2D estar morta no final do bloco.
No programa a seguir, a matriz 2D comum declarada no corpo da função morre no final do bloco de funções:
#incluirA saída ainda é, BB. Há um indicador de comentários logo abaixo do bloco de funções no programa. Se for removido, o programa não será compilado e uma mensagem de erro será emitida. Isso resulta do fato de a matriz 2D estar morta no final do bloco. Lembre -se também de que, a atribuição de um valor para um elemento 2D, após a declaração, não é permitida no escopo global.
Excluindo dinamicamente criada a matriz de ponteiro 2D da loja gratuita
A tarefa após a declaração não é permitida no escopo global. Portanto, é conveniente ter uma declaração de matriz 2D, em um escopo aninhado, na função principal do C ++, por razões pedagógicas.
Uma matriz bidimensional, declarada na forma acima, é excluída com a sintaxe, “exclua [] 2Darray”. Esta exclusão deve ocorrer em seu escopo para a memória livre e para evitar vazamentos de memória. O programa a seguir ilustra isso, com um escopo aninhado:
#incluirA saída é, aa, de ptr2d [0] [0]. Após a exclusão, ptr2d [0] [0] retorna nada. Embora os outros elementos como ptr2d [1] [1] ainda retornassem um valor, a matriz é considerada excluída.
2d Array de loja gratuita como ponteiro a ponte
Uma matriz 2D pode ser criada como um ponteiro para apontar. Nesse caso, todas as linhas terão que ser excluídas primeiro antes que a matriz unidimensional restante seja excluída. O programa a seguir ilustra isso na função principal do C ++:
#incluirA saída é BB antes de excluir. Após a exclusão, o valor de retorno de ptr2d [1] [1] não é nada.
Agora, esta matriz 2D Pointer na loja gratuita é um ponteiro em uma matriz dimensional, de matrizes de ponteiro. Portanto, para excluir a matriz 2D em uma loja gratuita, todas as linhas devem ser excluídas primeiro com excluir [] antes que a principal matriz de ponteiro unidimensional seja excluído. Isso usa o esquema de operador de exclusão [] para uma matriz 2D em uma loja gratuita.
Inclusão da biblioteca
O novo operador e excluir, é realmente definido na biblioteca. No entanto, incluindo esta biblioteca é opcional.
Conclusão
Para excluir uma matriz comum 2D, deixe -a sair do escopo. Se a matriz 2D estiver em uma loja gratuita, deve ser excluída com o operador delete [] para a memória livre no escopo em que é declarado. Se a matriz 2D na loja gratuita fosse criada com uma sintaxe convencional, um simples "excluir [] 2DARRAYNAME" faria por exclusão. Se foi criado como um ponteiro a apontar, as linhas deverão ser excluídas primeiro com “excluir [] 2DARRAYNAME [i]” e depois a matriz 1D restante (sem elementos), seja excluída com “delete [] 2DARRAYNAME ”.