IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

fuite mémoire avec pointeur


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Par défaut fuite mémoire avec pointeur
    Bonjour,

    j'ai une fonction avec dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    short test[50];
    short *test2 = test;
    test2 += 4;
    Est-ce que je crée une fuite mémoire ? le tableau test sera bien supprimé ?

  2. #2
    Membre éprouvé Avatar de Xtrem_Voyageur
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2009
    Messages : 85
    Par défaut
    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.
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    short *test = new short[50];
    Et là oui tu risques une fuite mémoire si tu ne désalloues pas la mémoire pointée par test.
    Pour la désallouer, il suffit de faire

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    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.

Discussions similaires

  1. Détection de fuites mémoire avec Valgrind
    Par dj.motte dans le forum GTK+ avec C & C++
    Réponses: 25
    Dernier message: 22/11/2008, 08h49
  2. Fuite mémoire avec code externe
    Par samW7 dans le forum C++
    Réponses: 8
    Dernier message: 01/02/2008, 02h33
  3. [AJAX] Appolo 13 - Fuite mémoire avec XHR
    Par mecatroid dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/09/2007, 14h52
  4. Fuites mémoires avec Vector
    Par ..alex.. dans le forum SL & STL
    Réponses: 15
    Dernier message: 10/08/2006, 11h35
  5. Fuite mémoire avec valgrind
    Par franchouze dans le forum C++
    Réponses: 3
    Dernier message: 05/06/2006, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo