Bonjour,
j'ai une fonction avec dedans :
Est-ce que je crée une fuite mémoire ? le tableau test sera bien supprimé ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 short test[50]; short *test2 = test; test2 += 4;
Bonjour,
j'ai une fonction avec dedans :
Est-ce que je crée une fuite mémoire ? le tableau test sera bien supprimé ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 short test[50]; short *test2 = test; test2 += 4;
Tu n'as alloué que des variables sur la pile et aucune sur le tas, tu ne cours donc aucun risque de fuite mémoire.
En écrivant :
tu as créé un tableau nommé test de 50 short et tu l'as créé sur la pile. C'est donc une variable dite automatique qui sera détruite automatiquement quand elle sortira de sa portée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 short test[50];
Cela ne t'empêche effectivement pas de faire pointer un pointeur dessus.
Au vu de ta question, on voit que tu penses : "pointeur donc fuite mémoire possible".
Cela est vrai quand ton pointeur pointe sur une mémoire allouée dynamiquement (sur le tas donc) à l'aide de new.
Par exemple tu aurais pu allouer ton tableau dynamiquement comme ceci :
Et là oui tu risques une fuite mémoire si tu ne désalloues pas la mémoire pointée par test.
Code : Sélectionner tout - Visualiser dans une fenêtre à part short *test = new short[50];
Pour la désallouer, il suffit de faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part delete[] test;
Bonjour,
pourquoi penses-tu avoir une fuite mémoire ? Tu n'as aucune allocation mémoire explicite.
test est crée sur la pile, il sera supprimé dès qu'on sort de sa portée
test2 est juste un pointeur sur le premier élément de test, le décaller de 4 revient à écrire test2 = &test[4];ton pointeur là est juste un allias sur test
Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
Un peu de programmation réseau ?
Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.
Partager