Réallocation en C : Explorer la solution std::vector
En C, l'absence d'une fonction de réallocation explicite peut soulever des inquiétudes lorsque vous besoin d'étendre les tampons dynamiques. Cependant, la classe de modèle std::vector fournit une solution pratique et efficace à ce problème.
Comprendre la réallocation
La réallocation implique d'ajuster la taille d'un bloc de mémoire précédemment alloué . En C , ceci est réalisé grâce à la fonction de réallocation. Cependant, C introduit la classe std::vector, qui gère les tableaux dynamiques et offre une méthode de réallocation plus simple et plus sûre.
Utiliser std::vector pour la réallocation
Pour allouer un tableau de n éléments avec des valeurs initiales définies sur 0, vous utiliserez généralement :
Type* t = (Type*)malloc(sizeof(Type)*n); memset(t, 0, sizeof(Type)*m);
Avec std::vector, cela peut être simplifié en :
std::vector<Type> t(n, 0);
Pour agrandir le tableau pour accueillir n2 éléments, vous utiliseriez :
t = (Type*)realloc(t, sizeof(Type) * n2);
Avec std::vector, c'est obtenu par :
t.resize(n2);
Passer des pointeurs vers des fonctions
Quand en passant des pointeurs vers des fonctions, vous pouvez utiliser &t[0] au lieu de t. Ceci est valide car std::vector prend en charge l'utilisation de ses éléments comme pointeurs vers le tableau sous-jacent.
Foo(&t[0])
Conclusion
En utilisant std::vector, vous pouvez réaffecter facilement et en toute sécurité la mémoire dynamique en C . Cela élimine le besoin d'une gestion explicite de la mémoire, rendant votre code plus concis et moins sujet aux erreurs.
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!