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 odpowiedzi

Załóż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.

questionAnswers(4)

yourAnswerToTheQuestion