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 :

Désallouer pointeur local à une fonction


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 107
    Par défaut Désallouer pointeur local à une fonction
    Bonjour,

    J'ai cherché pas mal de temps sur différents forums mais je ne trouve pas de réponse à mon souci.

    Dans une fonction main, je fais appel à une méthode membre d'une classe matrix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    int main (int argc, char ** argv)
    {
    mesh meshPC;
    meshPC.computeFeature ();
    return 0;
    }
     
     
     
    // Fichier mesh.cpp
    void mesh::computeFeature ()
    {
    double* ddd;
    ddd= new double[120];
     
     
     
    delete [] ddd;
    } // plante
    Et en fait, lorsque j'appel la fonction computeFeature depuis le main, à la fin de la fonction il plante et me dit que mon executable va etre arrété, mais quand j'enleve la désallocation du pointeur ddd, ça fonctionne et je ne comprend pas pourquoi je ne peux pas désallouer moi même le pointeru ?

    Merci de vos réponses et désolé d'avoir coupé le sujet en deux (fausse manip)

    Algernon

  2. #2
    screetch
    Invité(e)
    Par défaut
    Le code que tu as poste ici fonctionne, le probleme est ailleurs. Souvent, quand une deallocation ou une allocation plante, c'est qu'il y a eu un ecrasement de la memoire.
    Je dirai donc que le tableau ddd est utilise incorrectement (index -1 ou -2 par exemple)

    ce que tu peux faire c'est utiliser std vector a la place, il renverra des erreurs si tu accedes en dehors du tableau (en debug):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Fichier mesh.cpp
    void mesh::computeFeature ()
    {
    std::vector<double> ddd(120);
    .... 
     } // ne plante pas :)

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Est-ce que le pointeur ddd n'est pas modifié entre temps (lignes 16~18) ?
    Ou son contenu désalloué par un delete prématuré ?

Discussions similaires

  1. Désallocation de pointeur local à une fonction
    Par Algernon2 dans le forum C++
    Réponses: 11
    Dernier message: 06/06/2012, 15h09
  2. Utilité d'un pointeur vers une fonction ?
    Par Nasky dans le forum C
    Réponses: 10
    Dernier message: 20/03/2010, 19h54
  3. Pointeur sur une fonction
    Par bogosse dans le forum C
    Réponses: 12
    Dernier message: 16/02/2006, 14h16
  4. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

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