Как C ++ хранит функции и объекты в памяти? [Дубликат]

На этот вопрос уже есть ответ:

Что произойдет, когда я вызову функцию-член по нулевому указателю на объект? 6 ответов

Пусть у нас есть класс

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

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

Приведенный выше код скомпилируется на Turbo C (где я тестировал) и напечатаетHi как вывод.

Я ожидал аварии, потому чтоa являетсяNULL. Более того, если я сделаюsayHi() функция виртуальная, говорит

Abnormal temination(Segmentation fault in gcc) 

Я знаю, что многое зависит от реализации, но если бы кто-нибудь мог пролить свет на любую реализацию или просто дать обзор, это было бы очень приятно.

Ответы на вопрос(4)

Ваш ответ на вопрос