使用dynamic_pointer_cast时发生异常0xC0000409(堆栈缓冲区溢出)

问题描述 投票:-1回答:1

[尝试将dynamic_pointer_cast类型的共享点键入A时遇到崩溃。类型B与类型B不相关,并且我希望为空A,但是会引发上述异常。有没有不安全使用shared_ptr的方案?

此处引发异常:

dynamic_pointer_cast

使用MSVC 14.16.27023

c++ exception visual-c++ dynamic-cast
1个回答
0
投票

enter image description here要求格式正确,如果std::dynamic_pointer_cast(源)到U*(目标)的转换。如果不是,则您有未定义的行为。如果要像从T*中获取空指针一样,那么您将必须编写自己的版本来执行此操作。

另一个选项是测试]的结果>

dynamic_cast

如果成功,则调用dynamic_cast<decltype(destination_ptr.get())>(source_ptr.get()) ,否则返回空指针。

© www.soinside.com 2019 - 2024. All rights reserved.