Jak C ++ przechowuje funkcje i obiekty w pamięci? [duplikować
To pytanie ma już odpowiedź tutaj:
Co się stanie, gdy wywołam funkcję członka na wskaźniku obiektu NULL? 6 odpowiedziZałóżmy, że mamy klasę
class A
{
int x;
public:
void sayHi()
{
cout<<"Hi";
}
};
int main()
{
A *a=NULL;
a->sayHi();
}
Powyższy kod zostanie skompilowany na Turbo C (gdzie testowałem) i wydrukujeHi
jako wynik.
Spodziewałem się awarii, ponieważa
jestNULL
. Więcej, jeśli zrobięsayHi()
funkcja wirtualna, mówi
Abnormal temination(Segmentation fault in gcc)
Wiem, że wiele z nich zależy od implementacji, ale jeśli ktokolwiek mógłby rzucić nieco światła na jakąkolwiek implementację lub po prostu przedstawić ogólny zarys, byłoby naprawdę miło.