Blame view

_tutos/alloc_cpp.md 1.44 KB
a1774662   Geoffrey PREUD'HOMME   Rajout des antiqu...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  ---
  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:
  
  ```c++
  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:
  
  ```c++
  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!!!!!