The casting itself will not cause the crash(obviously..) But it is possible if you casted an object of a child that was not really that child that it will try to invoke a function from an un allocated or a wrong place and crash..
For example we have A, and B,C who inherit A,if B size is much grater than C.. you can crash it if you cast what was allocated C, to B.
this can be resolved using dynamic_cast<SomeType>(ptr);
and then asking if the result is not nullptr