Mam kawałek kodu wygląda tak:Co może spowodować awarię dynamic_cast?
TAxis *axis = 0;
if (dynamic_cast<MonitorObjectH1C*>(obj))
axis = (dynamic_cast<MonitorObjectH1C*>(obj))->GetXaxis();
Czasami wywala:
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
nie mam pojęcia, dlaczego to wywala. obj nie jest pusty (a gdyby był, nie byłby to problem, prawda?).
Co może być powodem rzucenia dynamicznej obsady?
Jeśli nie może rzutować, powinien po prostu zwrócić NULL no?
Dobra intuicja! Kolejny wątek zwalniał "obj". – Barth