Debugger value != Execution value
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Debugger value != Execution value



  1. #1
    NightCall

    Debugger value != Execution value


    ------

    Bonsoir tout le monde,

    J'étais entrain de m'exercer sur les allocations dynamiques lorsque j'ai fais face à ce problème:
    -> Pour le code ci-dessous, les valeurs renvoyées lors de l’exécution (que je constate via les printf) sont différentes que celles obtenues lors du mode debug. J'obtiens les valeurs suivantes lorsque je suis en exécution:
    variable[0] = 11
    variable[1] = 22
    variable[2] = 33
    variable[3] = 44
    variable[4] = 55

    Les valeurs suivantes lorsque je suis en mode debug (je place le breakpoint sur return):
    variable[0] = 11
    variable[1] = -1414812906
    variable[2] = -1414812757
    variable[3] = 44
    variable[4] = 55

    J'avais également regardé directement les valeurs à l'aide de l'option "watches", elles étaient identiques à celles renvoyées. Quelqu'un pour m'éclairer ? Merci d'avance.

    Voici le code:
    Code:
        int n = 3;
        
        int* variable = malloc(sizeof(int)*n);
        variable[0] = 11;
        variable[1] = 22;
        variable[2] = 33;
        printf("Adresse variable = %p\n", (void*)variable); 
        for(i=0; i<3; i++)
        {
            printf("variable[%d] = %d\n",i,variable[i]);
        }
    
        n = 5;
        variable = realloc(variable,n);
        variable[3] = 44;
        variable[4] = 55;
    
        printf("Adresse variable = %p\n", (void*)variable); 
        for(i=0; i<5; i++)
        {
            printf("variable[%d] = %d\n",i,variable[i]);
        }

    -----
    Dernière modification par NightCall ; 23/12/2019 à 23h52.

  2. #2
    Garion

    Re : Debugger value != Execution value

    Je ne connais pas vraiment le C, mais je crois voir un problème :

    variable = realloc(variable,n);
    Cela ne devrait pas plutôt être :
    variable = realloc(sizeof(int)*n);

    Cordialement.

  3. #3
    Paraboloide_Hyperbolique

    Re : Debugger value != Execution value

    Citation Envoyé par Garion Voir le message
    Je ne connais pas vraiment le C, mais je crois voir un problème :

    variable = realloc(variable,n);
    Cela ne devrait pas plutôt être :
    variable = realloc(sizeof(int)*n);

    Cordialement.
    Bonsoir,

    Non, cela devrait être:

    Code:
    variable = realloc(variable, sizeof(int)*n);

  4. #4
    pm42

    Re : Debugger value != Execution value

    Citation Envoyé par Garion Voir le message
    Je ne connais pas vraiment le C, mais je crois voir un problème :

    variable = realloc(variable,n);
    Cela ne devrait pas plutôt être :
    variable = realloc(sizeof(int)*n);
    Bien vu sur le principe malgré l'erreur dans la solution heureusement corrigée par Paraboloide_Hyperbolique. J'avais lu le code et je l'avais raté. Bravo.
    Dernière modification par pm42 ; 25/12/2019 à 18h23.

  5. A voir en vidéo sur Futura
  6. #5
    NightCall

    Re : Debugger value != Execution value

    Ah oui bien vu merci! Mais comment est-ce possible que les valeurs changent lorsque je lance le programme en debug ?

  7. #6
    pm42

    Re : Debugger value != Execution value

    Citation Envoyé par NightCall Voir le message
    Ah oui bien vu merci! Mais comment est-ce possible que les valeurs changent lorsque je lance le programme en debug ?
    Parce que le mécanisme d’allocation mémoire n’est pas le même et qu’en debug realloc a copié une partie seulement de ton tableau. T’es indices 1 et 2 pointent donc sur une partie de la mémoire jamais écrite.

Discussions similaires

  1. Debugger ICD2
    Par invitea1145a44 dans le forum Électronique
    Réponses: 4
    Dernier message: 29/03/2010, 11h55
  2. programmer/debugger PIC 18F4550
    Par inviteb5700de1 dans le forum Électronique
    Réponses: 3
    Dernier message: 01/03/2009, 17h52
  3. Problème debugger et pic
    Par invite469cf7a5 dans le forum Électronique
    Réponses: 0
    Dernier message: 27/05/2008, 10h38
  4. PIC, c'est quoi un debugger ?
    Par invite116c4f9b dans le forum Électronique
    Réponses: 3
    Dernier message: 22/10/2007, 23h45
  5. Mode Debugger PIC 10F222
    Par invite9d3f5cd9 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/10/2007, 22h21