L'opérateur new initialise la mémoire à zéro
Malgré l'idée fausse générale selon laquelle l'opérateur new n'initialise pas la mémoire avec des zéros, il peut en effet accomplir cela tâche dans des conditions spécifiques.
En C , il existe deux scénarios principaux dans lesquels le nouvel opérateur effectue zéro initialisation :
Parenthèses Initialisation :
Lorsque new est suivi de parenthèses et d'une liste d'initialisation vide, telle que wsk = new unsigned int() ;, il invoque explicitement le constructeur par défaut du type. Pour les types primitifs comme unsigned int, le constructeur par défaut initialise la mémoire à zéro.
Initialisation du tableau entre parenthèses :
Similaire au scénario précédent, en utilisant des parenthèses et une liste d'initialiseurs vide dans la déclaration de tableau, comme wsa = new unsigned int[5]();, initialise chaque élément du tableau à zéro.
Dans l'exemple de code fourni, les lignes suivantes présentent une initialisation nulle :
wsk2 = new unsigned int(5);
Cela initialise wsk2 à la valeur 5.
wsk2 = new unsigned int;
Ceci initialise wsk2 à zéro car il utilise la syntaxe des parenthèses sans liste d'initialisation. Ce comportement s'applique à la fois aux scalaires et aux tableaux.
Dans la deuxième partie de l'exemple, la sortie confirme l'initialisation zéro :
wsk2: 0x928e008 5 wsk2: 0x928e008 0
La première ligne montre que wsk2 pointe vers l'adresse 0x928e008 et contient la valeur 5. Après avoir supprimé wsk2 et en avoir créé un autre en utilisant new unsigned int;, la deuxième ligne montre qu'elle pointe maintenant vers le même adresse (0x928e008) mais contient zéro.
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!