Exercice 2: Modèle mémoire: pile et tas

Exercice 2: Modèle mémoire: pile et tas#

On considère le programme suivant.

int bidule = 0;

int f(int truc, vector<int> machin) {
    bidule = bidule + 1;
    truc = truc + 1;
    machin[0] = bidule;
    // ICI
    return truc;
}

int main() {
    int bidule = 2;
    vector<int> machin;
    machin = vector<int>(3);
    machin[0] = 0;
    machin[1] = 0;
    machin[2] = f(bidule, machin);
    // LÀ
    return 0;
}

Cochez ci-dessous les noms apparaissant dans ce programme comme nom de :

  1. Paramètre formel

    • [ ] bidule

    • [x] truc

    • [ ] f

    • [ ] main

    • [x] machin

  1. Variable locale

    • [x] bidule

    • [ ] truc

    • [ ] f

    • [ ] main

    • [x] machin

  1. Variable globale

    • [x] bidule

    • [ ] truc

    • [ ] f

    • [ ] main

    • [ ] machin

  1. Fonction

    • [ ] bidule

    • [ ] truc

    • [x] f

    • [x] main

    • [ ] machin

Sur votre brouillon, exécutez pas-à-pas le programme. En suivant les conventions du cours, représentez ci-dessous la pile et le tas au moment où l'exécution atteint la ligne marquée «ICI».

BEGIN SOLUTION

                   ┌────────────────────┬───┐
                 f┌│ vector<int> machin │3|●┼──────>┌─┬─┬─┐
                  └│ int truc           │ 3 │       │1│0│?│
                   ├────────────────────┼───┤	    └─┴─┴─┘
              main┌│ vector<int> machin │3|●┼──────>┌─┬─┬─┐
                  └│ int bidule         │ 2 │       │0│0│?│
                   ├────────────────────┼───┤       └─┴─┴─┘
variables globales │ int bidule         │ 1 │
                   ├────────────────────┴───┤
                   │          ...           │
                   └────────────────────────┘     ──────────────────
                              Pile                        Tas

END SOLUTION

Quelles sont les valeurs de bidule, bidule et machin au moment où l'exécution atteint la ligne marquée «»?

BEGIN SOLUTION

variable globale bidule: 1; variable locale bidule: 2; variable locale machin: {0,0,3}

END SOLUTION