使用 dynamic_pointer_cast 时出现异常 0xC0000409(堆栈缓冲区溢出)
Exception 0xC0000409 (stack buffer overflow) when using dynamic_pointer_cast
我在尝试 dynamic_pointer_cast
类型 A
的共享点键入 B
时遇到崩溃。
类型 B
与类型 A
无关,我希望一个空 shared_ptr
但相反,会引发上述异常。
是否存在使用 dynamic_pointer_cast
不安全的情况?
此处出现异常:
使用 MSVC 14.16.27023
std::dynamic_pointer_cast
要求 U*
(源)到 T*
(目标)的转换格式正确。如果不是,那么你有未定义的行为。如果你想像从 dynamic_cast
那样得到一个空指针,那么你将不得不编写自己的版本来做到这一点。
另一种选择是测试
的结果
dynamic_cast<decltype(destination_ptr.get())>(source_ptr.get())
如果成功则调用 std::dynamic_pointer_cast
否则 return 一个空指针。
我在尝试 dynamic_pointer_cast
类型 A
的共享点键入 B
时遇到崩溃。
类型 B
与类型 A
无关,我希望一个空 shared_ptr
但相反,会引发上述异常。
是否存在使用 dynamic_pointer_cast
不安全的情况?
此处出现异常:
使用 MSVC 14.16.27023
std::dynamic_pointer_cast
要求 U*
(源)到 T*
(目标)的转换格式正确。如果不是,那么你有未定义的行为。如果你想像从 dynamic_cast
那样得到一个空指针,那么你将不得不编写自己的版本来做到这一点。
另一种选择是测试
的结果dynamic_cast<decltype(destination_ptr.get())>(source_ptr.get())
如果成功则调用 std::dynamic_pointer_cast
否则 return 一个空指针。