В каких случаях приведение базового класса к производному в стиле c может привести к сбою

Я расследую случайный сбой (SIGBUS) и пытаюсь выяснить, что может повредить указатель, который вызывает сбойный метод. Я обнаружил, что этот указатель приводится из своего базового класса с использованием приведения в стиле C в коде C ++. Итак, мне интересно, в каких случаях такое приведение может вызвать сбой, и пытаюсь понять, было ли это основной причиной моей проблемы.

-3

Решение

Само кастинг не вызовет крушения (очевидно ..)
Но это возможно, если вы приведете объект потомка, который на самом деле не был таким потомком, что он попытается вызвать функцию из нераспределенного или неправильного места и произойдет сбой.

Например, у нас есть A и B, C, которые наследуют A, если размер B намного больше, чем C .. вы можете разбить его, если бросите то, что было выделено C, в B.
это можно решить с помощью dynamic_cast<SomeType>(ptr);
а затем спрашивает, если результат не nullptr

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]