Tôi có một đoạn mã tìm kiếm như thế này:Điều gì có thể khiến báo cáo dynamic_cast bị lỗi?
TAxis *axis = 0;
if (dynamic_cast<MonitorObjectH1C*>(obj))
axis = (dynamic_cast<MonitorObjectH1C*>(obj))->GetXaxis();
Đôi khi nó bị treo:
Thread 1 (Thread -1208658240 (LWP 11400)):
#0 0x0019e7a2 in _dl_sysinfo_int80() from /lib/ld-linux.so.2
#1 0x048c67fb in __waitpid_nocancel() from /lib/tls/libc.so.6
#2 0x04870649 in do_system() from /lib/tls/libc.so.6
#3 0x048709c1 in system() from /lib/tls/libc.so.6
#4 0x001848bd in system() from /lib/tls/libpthread.so.0
#5 0x0117a5bb in TUnixSystem::Exec() from /opt/root/lib/libCore.so.5.21
#6 0x01180045 in TUnixSystem::StackTrace() from /opt/root/lib/libCore.so.5.21
#7 0x0117cc8a in TUnixSystem::DispatchSignals()
from /opt/root/lib/libCore.so.5.21
#8 0x0117cd18 in SigHandler() from /opt/root/lib/libCore.so.5.21
#9 0x0117bf5d in sighandler() from /opt/root/lib/libCore.so.5.21
#10 <signal handler called>
#11 0x0533ddf4 in __dynamic_cast() from /usr/lib/libstdc++.so.6
tôi không có đầu mối tại sao nó bị treo. obj không phải là rỗng (và nếu nó không phải là một vấn đề, phải không?).
Lý do khiến một diễn viên năng động gặp sự cố?
Nếu không thể truyền, nó chỉ trả về NULL không?
Trực giác tốt! Một sợi khác đang giải phóng 'obj'. – Barth