@thaega@oc.todon.fr
- soit tu fais de l'allocation dynamique (du genre "int* i = malloc(100*sizeof(int));") et tu dois la libérer toi-même ( "free(i)") sinon tu t'exposes à une fuite mémoire.
Il n'y a pas de système de garbage collector en C++
@lleofar @thaega@oc.todon.fr
J'ai plus des réflexes de C en fait x)
J'ai l'impression d'avoir plus embroullé qu'autre chose au final.
Bref, un lien du coup : http://www.commentcamarche.com/contents/190-les-objets-en-langage-c
@thaega@oc.todon.fr @lleofar
Tiens un exemple d'allocation statique (sans le "new") d'objet : https://en.wikipedia.org/wiki/Object_lifetime#C++
En espérant que j'ai pas trop introduit de confusion et que ce soit plus clair ><'
@Nocta @thaega@oc.todon.fr Précision la différence entre statique et dynamique, c'est qu'en statique, tu stocke ton objet dans la pile, et c'est détruit automatiquement quand tu sors du scope.
En dynamique, l'objet est stocké dans un espace mémoire dont l'adresse est aléatoire, qu'il faudra la libérer à un moment ou un autre.
@thaega@oc.todon.fr @Nocta Un truc qu'il faut garder en tête c'est que la pile est limitée, alors que le tas (la zone mémoire dont le système se sert pour l'allocation dynamique) est beaucoup plus grand. Ça dépend de la quantité de RAM installée, et de ce que l'OS autorise (en fonction de l'utilisateur, et de la limite par processus, etc.), mais on peut considérer que c'est illimité.
@Nocta @thaega@oc.todon.fr
c'est du C ça. :p
En C++ tu utilises plutôt new int()[100] et delete.
Mais! en C++14, tu as des pointer intelligents qui libère la mémoire dès que plus rien ne pointe dessus. ( les shared_pointer je crois... ) Mieux que le garbage collector. (à priori c'est géré à la compilation plutôt qu'à l’exécution.
Il y a aussi d'autre types de pointers, mais je connais mal le C++14 donc je vais pas aller plus loin.
@Ambraven @thaega@oc.todon.fr Rololo, on arrête pas le progrès
@Ambraven @thaega@oc.todon.fr @Nocta Oui :) J'allais indiquer cette page là qui explique bien la chose: https://openclassrooms.com/courses/c-gerer-correctement-ses-allocations-dynamiques
@Nocta @thaega@oc.todon.fr En C++ C'est mieux d'utiliser new et delete.
new va en plus appeler un constructeur, et delete le destructeur en plus de l'allocation mémoire.
malloc, et free (bien que ce soit plus plopre au C) sont utilisable mais vaut mieux passer par new et delete