langage C : les pointeurs
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

langage C : les pointeurs



  1. #1
    cosmoff

    langage C : les pointeurs


    ------

    Bonjour,

    Code:
    int main(int argc, char const *argv[])
    {
        int* tab[5];
        
        {
            int a = 100;
            tab[0] = &a;
        }
    
        printf("*(tab[0]) = %i\n",*(tab[0]) ); 
        return 0;
    }
    est ce dangereux cette pratique ?
    car à la sortie du scope la zone mémoire de 'a' est libérée et donc une autre variable peut prendre la place dans la pile et ca peut changer la valeur de *tab[0] non ?

    Comment faire pour résoudre ce probleme, faire un
    Code:
    {
     int *a = (int*) malloc(sizeof(int);
     *a = 5;
    tab[0] = a;
    }
    Merci d'avance pour votre aide

    -----
    Dernière modification par Jack ; 14/03/2019 à 18h25. Motif: orthographe du titre

  2. #2
    Deedee81
    Modérateur

    Re : lanage C : les pointeurs

    Salut,

    En effet, il y a un soucis.

    Le tableau est un tableau de pointeurs, donc pas de problème pour y mettre un pointeur tel que le pointeur sur a.
    Mais le soucis est que la variable a est locale.
    Une fois sorti des accolades, elle "cesse d'exister" et la zone mémoire pourrait être utilisée pour autre chose. donc le printf pourrait déconner.

    Il faut soit utiliser une variable globale ou allouer une zone mémoire comme tu le fais.
    Avec un soucis : faut libérer la zone mémoire en temps voulu.
    "Il ne suffit pas d'être persécuté pour être Galilée, encore faut-il avoir raison." (Gould)

  3. #3
    cosmoff

    Re : lanage C : les pointeurs

    merci de l'info

  4. #4
    Jack
    Modérateur

    Re : lanage C : les pointeurs

    Il me semble que la 2ème solution convient, a ne servant que de variable intermédiaire.

    Rmq: le (int*) devant le malloc ne me semble pas indispensable en C.

    Je ne comprends cependant pas trop la problématique car je ne vois pas l'intérêt de définir un bloc local dans la fonction.
    Dernière modification par Jack ; 14/03/2019 à 11h15.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. pointeurs
    Par amiire6 dans le forum Programmation et langages, Algorithmique
    Réponses: 13
    Dernier message: 05/07/2016, 09h44
  2. Pointeurs
    Par DorioF dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 30/09/2011, 01h05
  3. tableau et pointeurs c++
    Par invite0422bf25 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 11/12/2009, 17h50
  4. ?les pointeurs & les structures()
    Par invite5c6a01fc dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 08/12/2009, 22h14
  5. C: pointeurs, destructions
    Par inviteead871d5 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 15/08/2008, 10h54