Supponiamo di avere una classe:Dove si trovano le funzioni di un oggetto memorizzate?
class Foo
{
private:
int a;
public:
void func()
{
a = 0;
printf("In Func\n");
}
}
int main()
{
Foo *foo = new Foo();
foo->func();
return 0;
}
Quando viene creato l'oggetto della classe Foo e inizializzata, comprendo che un intero assumerà 4 byte di memoria. Come viene memorizzata la funzione? Cosa succede in memoria/stack/registri/con il contatore del programma quando si chiama foo-> func()?
"il compilatore inserisce un salto nel segmento di codice". Dove sono archiviate queste informazioni di salto? – shaveenk
@shaveenk Direttamente sul sito di chiamata, ovvero un'altra parte del segmento di codice. Per una chiamata statica diventa hardcoded, quindi si finisce semplicemente con un semplice goto 0xSomewhere; nell'assemblaggio (dopo alcuni parametri di regolazione) – Quentin