Détermination de la taille du tableau après allocation dynamique en C
En C , les tableaux alloués dynamiquement à l'aide de l'opérateur new n'exposent pas intrinsèquement leur taille par programme. Cette question découle de l'observation selon laquelle delete[] doit être conscient de la taille du tableau alloué pour libérer efficacement la mémoire.
Pourquoi aucune fonction intégrée pour obtenir la taille du tableau ?
Contrairement aux tableaux déclarés sur la pile, dont la taille peut être déterminée à l'aide de sizeof(), la taille des tableaux alloués dynamiquement est inconnue lors de la compilation. En effet, le gestionnaire de mémoire du runtime ou du système d'exploitation gère la mémoire allouée, et non le compilateur. sizeof() fonctionne comme une constante de compilation et ne peut pas évaluer dynamiquement les tailles des tableaux alloués dynamiquement.
Stratégies alternatives
Même si C ne fournit pas de fonction intégrée pour obtenir la taille du tableau, il existe des approches alternatives :
int *arr = new int[256]; int *p = &arr[100]; int size = p - arr; // Subtracting pointers yields the size
Implications
L'absence d'un moyen standardisé pour déterminer la taille des tableaux alloués dynamiquement dans les tiges C de l'accent mis par le langage sur la flexibilité de la gestion de la mémoire et l'indépendance de la plate-forme. Bien qu'il présente des limites dans certains scénarios, il permet également diverses stratégies de mise en œuvre et opportunités d'optimisation.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3