Partage
  • Partager sur Facebook
  • Partager sur Twitter

Objet local à la fonction (déstruction)

Question concernant la destruction d'u objet local.

Sujet résolu
    4 avril 2019 à 11:16:58

    Bonjour, 

    j'ai crée un objet local et je voulais savoir ce qui se passe au niveau de la mémoire( est ce que cette objet sera détruit après la sortie de ma fonction

    inline q2timespec* checktime(q2timespec o_a_step, q2timespec o_a_startNear, q2timespec o_a_stop )
    
    {
    
        q2timespec* o_l_startStop = new q2timespec[2];
    
         ..........
    
       ...........
    
        return o_l_startStop;
    
    }

    je pense que non car ma fonction pointe sur l'adresse de l'objet mais vue que c'est un objet local normalement il doit être détruit après la fin de ma fonction alors je me demande comment ca se passe.

    et comment cette objet est détruit (est ce qu'il est détruit déjà ou jamais sinon comment le détruire ?) 

    • Partager sur Facebook
    • Partager sur Twitter
      4 avril 2019 à 11:48:51

      Salut,

      Le pointeur lui est détruit, mais pas la ressource.

      Pourquoi jouer avec un pointeur nu en 2019 alors que les pointeurs intelligents font tout pour toi ?

      • Partager sur Facebook
      • Partager sur Twitter

      Architecte logiciel - Software craftsmanship convaincu.

        4 avril 2019 à 14:11:18

         malheureusement j'ai jamais utilisé ce type de pointeur .

        ca serai cool si tu me donne un exemple de comment l'utiliser. :) 

        • Partager sur Facebook
        • Partager sur Twitter
          4 avril 2019 à 15:16:04

          Salut,

          Et tu peux aussi éviter d'utiliser des tableaux et utiliser des containers adaptés à ce que tu veux faire, ça te simplifiera grandement le développement

          Par contre si tu ne connais ni les pointeurs intelligents ni les vectors, il va falloir que tu suives un cours correct (tel celui de zds ou de gbdivers) :/ car à part pour koala01 qui écrit des messages plus long que mon mémoire, le sujet est trop conséquent pour tout t'expliquer dans un post de forum. Par contre si tu as des questions précises, n'hésites pas à venir les poser.

          Aussi tu n'as pas bien saisi ce qu'est un objet local, le tableau de 2 q2timespec que tu crée ici n'en est pas un, il est alloué dans une mémoire qui s'apelle le "tas", qui contient les objets alloués dynamiquements. Et puisqu'il a été alloué dynamiquement à l'aide de l'opérateur new[], il existe jusqu'à ce qu'il soit détruit manuellement avec l'opérateur delete[]

          -
          Edité par romantik 4 avril 2019 à 15:18:15

          • Partager sur Facebook
          • Partager sur Twitter
          Dream on, Dream on, Dream until your dream comes true
            4 avril 2019 à 15:18:48

            Utilise std::vector, on ne fait pas des tableaux dynamique de cette manière là dans 99% du temps.

            -
            Edité par markand 4 avril 2019 à 15:18:55

            • Partager sur Facebook
            • Partager sur Twitter

            git is great because Linus did it, mercurial is better because he didn't.

              4 avril 2019 à 15:40:04

              j'ai eu ma réponse, Merci à vous
              • Partager sur Facebook
              • Partager sur Twitter

              Objet local à la fonction (déstruction)

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown