Como o C ++ armazena funções e objetos na memória? [duplicado

Esta pergunta já tem uma resposta aqui:

O que acontecerá quando eu chamar uma função de membro em um ponteiro de objeto NUL respostas

Digamos que temos uma aula

class A
{
    int x;
public:
    void sayHi()
    {
        cout<<"Hi";
    }
};

int main()
{
    A *a=NULL;
    a->sayHi();
}

O código acima será compilado no Turbo C (onde testei) e imprimiráHi como saída.

Eu esperava um acidente porquea éNULL. Mais se eu fizersayHi() função virtual, diz

Abnormal temination(Segmentation fault in gcc) 

Sei que muito disso depende da implementação, mas se alguém pudesse esclarecer alguma implementação ou apenas fornecer uma visão geral, seria muito bo

questionAnswers(4)

yourAnswerToTheQuestion