Suppression du tableau en C ++

Suppression du tableau en C ++
Cet article explique comment supprimer un tableau en C++. Il comprend également la suppression du tableau de pointeur. Avant cela, il faut indiquer qu'il existe deux principales façons de créer un tableau en C ++, qui dépend du type de mémoire utilisé. Lorsqu'un programme est en cours d'exécution, il reçoit deux portions de mémoire: la mémoire normale, qu'il utilise; et magasin gratuit, qu'il peut utiliser ou non. Un tableau peut être créé en mémoire normale ou dans un magasin gratuit. Les syntaxes pour créer un tableau dans l'une ou l'autre partie de mémoire sont différentes; Sinon, c'est le même tableau. Les façons dont ils peuvent être supprimées sont également différentes.

Tableau ordinaire

Un tableau peut être créé en mémoire normale comme suit:

char arr [] = 'p', 'q', 'r', 's', 't';

Pour supprimer ce tableau, laissez-le sortir de la portée.

Tableau de magasin gratuit

Un tableau peut être créé dynamiquement, lors de l'exécution du programme, dans le magasin gratuit. Un tel tableau peut être créé comme suit:

char * ptr = new char [5] 'p', 'q', 'r', 's', 't';

Le même tableau peut être créé dans la fonction principale C ++ que suit:

char * ptr = nouveau char [5];
ptr [0] = 'p'; ptr [1] = 'q'; ptr [2] = 'r'; ptr [3] = 's'; ptr [4] = 't';

Remarque de l'utilisation de l'opérateur, nouveau, ici. Le PTR est un pointeur. Arr ci-dessus est également un pointeur mais a été approché sous un angle différent. Pour supprimer ce tableau, utilisez l'opérateur, supprimez [] comme indiqué ci-dessous. Le tableau dans le magasin gratuit ne peut pas être supprimé en le laissant sortir de la portée. Il doit donc être supprimé avec l'opérateur de suppression [].

Cet article illustre les différentes façons de supprimer un tableau créé de deux manières.

Contenu de l'article

- Suppression du tableau ordinaire

- Suppression du tableau de pointeur créé dynamiquement du magasin gratuit

- Conclusion

Suppression du tableau ordinaire

Pour supprimer un tableau ordinaire, laissez-le sortir de la portée. Bien que la fonction principale () soit la fonction de capital d'un programme C ++, elle est toujours une fonction. Dans le programme suivant, un tableau est créé dans une portée locale imbriquée (bloc) dans la fonction principale C ++:

#inclure
Utilisation de Namespace Std;
int main()

if (1 == 1)
char arr [] = 'p', 'q', 'r', 's', 't';
couter<
// cout<retour 0;

La sortie est, q. La lunette imbriquée est le bloc de l'IF-Construct. Le tableau a été créé dans ce bloc et utilisé dans le même bloc en imprimant la deuxième valeur du tableau. À la fin du bloc, la variable du tableau meurt. Si l'indicateur de commentaire juste en dessous du bloc est supprimé, le programme ne sera pas compilé, un message d'erreur sera émis. Ce sera dû au fait que le tableau est mort à la fin du bloc.

Le programme suivant, illustre une chose similaire, mais dans une fonction, appelée fn ().

#inclure
Utilisation de Namespace Std;
void fn ()
char arr [] = 'p', 'q', 'r', 's', 't';
couter<
// arr [1] = 'u';
int main()

fn ();
retour 0;

La sortie est toujours, q. Si l'indicateur de commentaire juste en dessous du bloc fonctionnel est supprimé, le programme ne se compile pas et un message d'erreur sera émis. Ce sera dû au fait que le tableau est mort à la fin du bloc fonctionnel (portée). Notez également cette affectation après déclaration, n'est pas autorisée dans la portée mondiale.

Suppression du tableau de pointeur créé dynamiquement du magasin gratuit

Étant donné que l'attribution après la déclaration n'est pas autorisée dans la portée globale, le tableau dans le magasin gratuit sera effectué dans une portée imbriquée au bloc fonction principal C ++ qui est illustré ci-dessous. L'opérateur de suppression [] est utilisé dans la portée imbriquée, pour supprimer le tableau, comme suit:

#inclure
Utilisation de Namespace Std;
int main()

if (1 == 1)
char * ptr = new char [5] 'p', 'q', 'r', 's', 't';
couter<supprimer [] ptr;
couter<
retour 0;

La sortie est un «q», de la première instruction COUT. Notez que le nom du tableau, PTR, comme argument (paramètre) de l'opérateur de suppression. Le tableau, PTR pour le magasin gratuit, est déclaré, utilisé et supprimé avec l'opérateur «supprimer [] ()» dans la même portée imbriquée. S'il est laissé pour sortir de la portée, sans «supprimer [] ptr», il ne serait pas vraiment supprimé car il est en magasin gratuit. Un tel tableau doit être supprimé dans sa portée, après utilisation avec l'opérateur de suppression []. La suppression avec l'opérateur de suppression [] doit être effectuée pour le tableau dynamique afin de libérer de la mémoire (éviter la fuite de mémoire).

Le programme suivant, illustre une chose similaire, mais dans la portée de la fonction principale C ++:

#inclure
Utilisation de Namespace Std;
int main()

char * ptr = new char [5] 'p', 'q', 'r', 's', 't';
couter<supprimer [] ptr;
retour 0;

La sortie est toujours, Q comme il le devrait, avec l'index. Tout le code d'intérêt est directement dans la fonction principale C ++. Bien que la fonction principale () soit la fonction de capital d'un programme C ++, il est toujours une fonction de la portée de la fonction ou du bloc de fonction.

Inclusion de l'en-tête de la bibliothèque

Comme indiqué ci-dessus, aucune bibliothèque n'a été incluse pour l'utilisation des opérateurs nouveaux ou supprimés. Cependant, les opérateurs nouveaux et de suppression se trouvent dans la nouvelle bibliothèque, qui est implicitement inclus. Les opérateurs nouveaux et supprimés sont de la portée mondiale. La bibliothèque peut toujours être incluse comme dans le programme suivant pour le tableau ordinaire:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

if (1 == 1)
char arr [] = 'p', 'q', 'r', 's', 't';
couter<
// cout<retour 0;

Le programme fonctionne sans aucun problème. La bibliothèque peut toujours être incluse, comme dans le programme suivant, pour un tableau de pointeur dynamique dans le magasin gratuit:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

if (1 == 1)
char * ptr = new char [5] 'p', 'q', 'r', 's', 't';
couter<supprimer [] ptr;

retour 0;

Le programme fonctionne sans aucun problème. Remarque: y compris le nouvel en-tête (bibliothèque) n'est pas obligatoire.

Conclusion

Pour supprimer un tableau ordinaire, laissez-le sortir de la portée. Pour supprimer un tableau de pointeur dynamique de magasin gratuit, utilisez l'opérateur, supprimez [] ArrayName, dans la même portée. L'opérateur de suppression du tableau peut avoir un deuxième et / ou un troisième argument. Cependant, c'est une discussion pour une autre fois.