К тому времени, когда происходит coredump, вы уже не в C ++.Некоторые операторы в скомпилированном коде вызывали плохие вещи, такие как попытка доступа к неверному адресу памяти, в вашем случае через нулевой указатель.
Я предполагаю, что вы надеетесь, что диагностика в дампе ядраможет указывать на проблему, вместо того, чтобы (по-видимому, в данном случае) выдавать слегка неопределенные результаты.
Дело в том, что возврат от скомпилированных двоичных файлов к строкам исходного кода несколько сложен, поскольку в языке есть множество возможностей длянекоторый "как будто" вид переупорядочения заявлений и другой хитрости.
Таким образом, сам C ++ в спецификации языка не будет указывать то, что вам скажет дамп ядра, и, как уже наблюдалось, явно дает недопустимое поведение при разыменовании нулевых указателей.
Дело в том, что я не думаю, что это имеет большое значение.Для такого рода ошибок получение «достаточно близкого» показателя того, где проблема в скором времени, приводит к источнику проблемы.Более неприятными являются проблемы повреждения кучи, возникающие в тех случаях, когда симптомы и причины могут находиться на расстоянии нескольких шагов друг от друга, а дампы ядра используются меньше.