Considera la seguente funzione C ++:
void doStuff() {
Thing thingA;
Thing thingB;
thingA.doSomething();
// .. etc
}
Durante l'esecuzione di questa funzione, le variabili thingA
e thingB
sono allocate nello stack. Ciò significa che la variabile thingA
rappresenta un indirizzo nello stack e il suo valore è ciò che viene assegnato in questo indirizzo (correggimi se ho torto).
Ciò che non capisco è questo: quando chiamiamo thingA.doSomething()
, come fa la CPU a sapere quale sia l'indirizzo rappresentato da thingA
? Il valore mantenuto da thingA
è attualmente nascosto nello stack sotto altri dati. In che modo la CPU sa qual è l'indirizzo che conduce a questo valore, al fine di raggiungere questi dati?