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 :
Paramètre formel
[ ] bidule
[x] truc
[ ] f
[ ] main
[x] machin
Variable locale
[x] bidule
[ ] truc
[ ] f
[ ] main
[x] machin
Variable globale
[x] bidule
[ ] truc
[ ] f
[ ] main
[ ] machin
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 «LÀ»?
BEGIN SOLUTION
variable globale bidule: 1; variable locale bidule: 2; variable locale machin: {0,0,3}
END SOLUTION