Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passage de pointeur de façon générique

    23 octobre 2017 à 8:31:47

    Bonjour à tous,

    Pour alléger mon code, je souhaiterais tester si l'allocation de la mémoire s'est bien déroulée via une fonction.

    Ainsi, j'ai écrit la fonction suivante... mais le problème, si je n'ai pas de fuite mémoire je ne peux pas savoir si cela fonctionne.Ici l'écriture vous semble-t-elle correcte ?

    void testMalloc(void *ptr){
    
        if (ptr == NULL) // Si l'allocation a échoué
        {
            exit(0); // On arrête immédiatement le programme
        }
    }
    
    


    L'appel de la fonction


                        TPtrListOcc new_occ = (TPtrListOcc)malloc(sizeof(TPtrListOcc));
                        testMalloc(&new_occ);




    Encore une question, de même je souhaite passer un pointeur générique dans une fonction qui va faire l'allocation en fonction du cas tête de liste ou bien fin de liste.

    Je récupère donc un pointeur de type void dans la fonction, mais quand je fais appel à des éléments de la structure des différents pointeurs (liste supérieure ou actuel) cela ne fonctionne pas. Auriez vous des explications plus pousser sur l'utilisation du pointeur void.

    Merci d'avance pour vos retours,

    -
    Edité par benjin 23 octobre 2017 à 8:33:27

    • Partager sur Facebook
    • Partager sur Twitter
      23 octobre 2017 à 10:26:13

      Bonjour,

      La fonction testMalloc semble correcte.
      Je vois en revanche deux erreurs dans l'appel.
      La taille passée à malloc ne correspond pas à ce qui est pointé.
      Ce n'est pas l'adresse de new_occ qui faut tester, mais la valeur de new_occ.

      • Partager sur Facebook
      • Partager sur Twitter
        23 octobre 2017 à 10:29:16

        Salut tu as deux lignes pour faire ton malloc et appeler la fonction :)

        tu peux faire du coup ça :

        struct test   *tmp;
        
        if ((tmp = malloc(sizeof(struct test)) == NULL)
           exit(EXIT_FAILURE);
        
        



        • Partager sur Facebook
        • Partager sur Twitter
        Quand tu regardes l'abîme, l'abîme regarde aussi en toi.
          24 octobre 2017 à 8:08:11

          Merci pour vos réponses,

          Donc au final cela doit donner :

          TPtrListOcc new_occ = (TPtrListOcc)malloc(sizeof(ListOcc));
          testMalloc(new_occ);

          Merci pour l'idée NutNut. C'est une autre possibilité de condensé :)

          -
          Edité par benjin 24 octobre 2017 à 8:09:21

          • Partager sur Facebook
          • Partager sur Twitter

          Passage de pointeur de façon générique

          × 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