Détermination de la taille d'un 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 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.
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!