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 :

Assignation double pointeur


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 63
    Par défaut Assignation double pointeur
    Une petite question...
    J'ai 2 matrices, une qui s'appelle mat1 et l'autre mat2.

    J'alloue de l'espace à mat1 de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mat1=(int**)malloc(sizeof(int*)*nb);
     for(int i=0; i<nb; i++)
        {
          mat1[i] = (int*)malloc(sizeof(int) * N);
        }
    puis je remplie ma matrice...

    J'aimerais savoir s'il est correcte de faire mat2=mat1 ( sans allouer de l'espace a mat2 etc), en faisant ça, je dit que les 2 pointeurs dont référence à la meme adresse mémoire non?

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par micromich Voir le message
    J'aimerais savoir s'il est correcte de faire mat2=mat1 ( sans allouer de l'espace a mat2 etc), en faisant ça, je dit que les 2 pointeurs dont référence à la meme adresse mémoire non?
    Oui, dans ce cas, il y a une seule zone memoire allouée et 2 pointeurs qui pointent vers la même zone.

    Tu as intérêt à te rappeler que tu ne dois libérer qu'un seul pointeur sinon, c'est le double free et c'est un crash presqu'assuré !!
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Oui, dans ce cas, il y a une seule zone memoire allouée et 2 pointeurs qui pointent vers la même zone.

    Tu as intérêt à te rappeler que tu ne dois libérer qu'un seul pointeur sinon, c'est le double free et c'est un crash presqu'assuré !!
    A défaut du crash, on sut d'être en précense d'un comportement indéfni.
    A partir de là, ca peux marcher comme crasher comme faire autre chose (formatter ton PC, lancer une attaque nucléaire,...) tout en restant conforme à la norme.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

Discussions similaires

  1. Double pointeurs dans les listes chainées
    Par NouK32 dans le forum Débuter
    Réponses: 8
    Dernier message: 10/02/2008, 18h19
  2. double pointeur dans un fichier txt
    Par micka180 dans le forum VBScript
    Réponses: 14
    Dernier message: 22/01/2008, 16h23
  3. Réponses: 6
    Dernier message: 07/07/2007, 18h12
  4. Réponses: 6
    Dernier message: 04/01/2007, 01h30
  5. double pointeur?
    Par ostralo dans le forum C++
    Réponses: 17
    Dernier message: 23/02/2006, 18h24

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