Création d'un tableau 2D ordinaire
La déclaration suivante crée un tableau 2D ordinaire:
String arr2d [] [5] = "aa", "ab", "ac", "ad", "ae",Si ce tableau est créé dans la portée globale, il ne peut pas être utilisé (e.g. réaffecté une valeur d'élément) dans la portée globale. Cependant, il peut faire en sorte que l'un de ses éléments réaffecte une valeur dans les autres portées.
Pour supprimer ce tableau, laissez-le sortir de la portée. S'il était créé dans une portée autre que la portée globale, il sortirait de la portée à la fin de son bloc (). S'il était créé dans la portée mondiale, il ne ferait que de la portée à la fin du programme.
Tableau 2D de magasin gratuit
L'instruction suivante montre comment le tableau ci-dessus mais avec un nom de pointeur différent peut être créé dynamiquement dans le magasin gratuit:
String (* ptr2d) [5] = new String [5] [5] "aa", "ab", "ac", "ad", "ae",Notez comment le tableau 2D a été créé avec le nouvel opérateur. Le nom du tableau, est ptr2d.
Si ce tableau est créé dans la portée globale, il ne peut pas être utilisé (e.g. réaffecté une valeur d'élément) dans la portée globale. Cependant, il peut avoir l'un de ses éléments, réaffecté une valeur dans les autres portées.
Pour supprimer ce tableau, utilisez l'opérateur de suppression [], comme indiqué ci-dessous. Le tableau dans le magasin gratuit ne peut pas vraiment être supprimé en le laissant sortir de la portée. Il doit être supprimé avec l'opérateur de suppression [], dans sa portée, afin de libérer de la mémoire.
Contenu de l'article
- Introduction - Voir ci-dessus
- Suppression d'un tableau ordinaire 2D
- Suppression du tableau de pointeur 2D créé dynamiquement en magasin gratuit
- Conclusion
Suppression d'un tableau ordinaire 2D
Un tableau ordinaire bidimensionnel est supprimé en le laissant simplement sortir de la portée. Le programme suivant l'illustre avec une portée imbriquée:
#inclureLa sortie est, bb. L'IF-Construct a un bloc qui est la portée imbriquée. Le tableau s'arrête existant à la fin du bloc. Il y a un indicateur de commentaires, juste en dessous du bloc, dans le programme. S'il est supprimé, le programme ne se compile pas et un message d'erreur sera émis. Cela résulte du fait que le tableau 2D est mort à la fin du bloc.
Dans le programme suivant, le tableau 2D ordinaire déclaré dans le corps de fonction, décède à la fin du bloc fonction:
#inclureLa sortie est toujours, BB. Il y a un indicateur de commentaire juste en dessous du bloc fonction du programme. S'il est supprimé, le programme ne se compile pas et un message d'erreur sera émis. Cela résulte du fait que le tableau 2D est mort à la fin du bloc. Rappelez-vous également que l'attribution d'une valeur à un élément 2D, après déclaration, n'est pas autorisée dans la portée globale.
Suppression du tableau de pointeur 2D créé dynamiquement en magasin gratuit
Affectation après la déclaration n'est pas autorisée dans la portée mondiale. Ainsi, il est pratique d'avoir une déclaration de tableau 2D, dans une portée imbriquée, dans la fonction principale C ++, pour des raisons pédagogiques.
Un tableau bidimensionnel, déclaré dans la forme ci-dessus, est supprimé avec la syntaxe, «supprimer [] 2darray». Cette suppression doit avoir lieu dans sa portée pour libérer la mémoire et éviter les fuites de mémoire. Le programme suivant illustre cela, avec une portée imbriquée:
#inclureLa sortie est, aa, de Ptr2d [0] [0]. Après la suppression, Ptr2d [0] [0] ne renvoie rien. Bien que les autres éléments tels que PTR2D [1] [1] renvoient toujours une valeur, le tableau est considéré comme supprimé.
Tableau de magasin GRATUIT 2D en tant que pointeur à pointeur
Un tableau 2D peut être créé en tant que pointeur à pointeur. Dans ce cas, toutes les lignes devront être supprimées avant le fait que le tableau unidimensionnel reste est supprimé. Le programme suivant l'illustre dans la fonction principale C ++:
#inclureLa sortie est BB avant de supprimer. Après la suppression, la valeur de retour de PTR2D [1] [1] n'est rien.
Maintenant, ce tableau 2D pointeur en magasin gratuit est un tableau unidimensionnel de pointeur, de tableaux de pointeur. Ainsi, afin de supprimer le tableau 2D dans le magasin gratuit, toutes les lignes doivent être supprimées en premier avec la suppression [] avant que le tableau de pointeur unidimensionnel principal ne soit supprimé. Ceci utilise le schéma de suppression de l'opérateur pour un tableau 2D dans le magasin gratuit.
Inclusion de la bibliothèque
Le nouvel opérateur de suppression est en fait défini dans la bibliothèque. Cependant, y compris cette bibliothèque est facultative.
Conclusion
Pour supprimer un tableau ordinaire 2D, laissez-le sortir de la portée. Si le tableau 2D est en magasin gratuit, il doit être supprimé avec l'opérateur de suppression de la mémoire libre dans la portée dans laquelle il est déclaré. Si le tableau 2D en magasin gratuit était créé avec une syntaxe conventionnelle, alors une simple «supprimer [] 2darrayname» ferait pour la suppression. S'il a été créé en tant que pointeur à pointeur, alors les lignes devront être supprimées d'abord avec «Supprimer [] 2DArrayName [i]», puis le tableau 1D restant (sans éléments), être supprimé avec «Supprimer [] 2darrayname ».