alloc_cpp.md 1.44 KB

title: "(Ré-)allocations en C++" tags: cpp alloc author: "Jean Loup Beaussart"

date: 2016-03-19 14:56

Bonjour à tous les enfants, j'ai réfléchi pour l'histoire du realloc() en C++. Donc la réponse est non, il n'y a pas d'équivalent pour realloc() en C++. Ensuite je me suis demandé : "Mais pourquoi Marianne utilise realloc()?" . Et là je me suis dit qu'elle faisait surement un truc du genre:

int *tab = (int*)malloc(10 * sizeof(int));

/* Elle remplit ses valeurs */

/* Un peu plus tard elle doit ajouter 5 nouvelles valeurs */

tab = (int*)realloc(tab, 15 * sizeof(int));

Et bien bonne nouvelle les enfants, en C++ plus besoin d'utiliser des tableaux classiques ( int tab[10]; ). La bibliothèque standard contient des objets que l'on appelle des conteneurs. En particulier il y a la classe std::vector< int > qui est un tableau dynamique. Vous pouvez l'utiliser comme un tableau normal mais en plus il gère automatiquement son espace d'allocation.

Pour reprendre l'exemple ci-dessus:

std::vector< int> tab;

/* On met des valeurs dedans */
tab.push_back(42);
tab.push_back(666);

/* On peut les récupérer comme un tableau classique */
std::cout << tab[1];     //Ca va afficher 666

/* On peut encore rajouter des valeurs */
tab.push_back(45645616);

/* On peut compter le nombre d'éléments dans le tableau ou bien vider le tableau */
std::cout << tab.size();
tab.clean();

Et encore plein d'autre chose incroyable!!!!!