Maison > développement back-end > C++ > `new int[0]` peut-il allouer de la mémoire en C et quelles sont les implications ?

`new int[0]` peut-il allouer de la mémoire en C et quelles sont les implications ?

Patricia Arquette
Libérer: 2024-12-29 18:00:26
original
862 Les gens l'ont consulté

Can `new int[0]` Allocate Memory in C  , and What are the Implications?

Les tableaux vides peuvent-ils être alloués en C à l'aide de "new int[0]" ?

En C, l'utilisation d'un nouvel opérateur pour allouer la mémoire est souvent utilisée. Cependant, une question se pose concernant l'allocation de tableaux vides à l'aide de new int[0]. Ce code alloue-t-il de la mémoire, et que précise la norme à ce sujet ?

Perspective standard

Selon 5.3.4/7 de la norme C, lorsque le direct -l'expression new-declarator est évaluée à zéro, la fonction d'allocation attribue un tableau sans élément. Néanmoins, 3.7.3.1/2 souligne que le déréférencement d'un pointeur résultant d'une requête de taille nulle conduit à un comportement indéfini.

En pratique

Malgré la tolérance de la norme pour En allouant des tableaux vides, il prévient que cette opération peut toujours échouer. Par conséquent, on ne peut transmettre en toute sécurité la mémoire allouée à la suppression du tableau pour désallocation, évitant ainsi tout accès direct à la mémoire.

Note spéciale

Une note de bas de page dans la norme suggère que le le comportement imite l'approche de malloc() ou calloc() en C, où une requête nulle renvoie un pointeur non nul. Cet écart par rapport à C garantit l'interopérabilité entre les plates-formes et permet l'allocation de tableaux vides en C.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal