Díky za rady, prostě jsem před to delete dal kontrolu if(IsInWorld()) která musí vyhodit true pokud objekt ještě existuje. Bohužel, není to dobré řešení, lepší by bylo najít jak je možné, že se ten delete volá, ale v tom programu ze kterého backtrace pochází, je to docela nesnadné, protože je open-source a je obrovský :(
Příspěvky odeslané z IP adresy 83.240.110.–
Tassadar
Tassadar
Takže jednoduše kontrola if(object) by měla stačit?
Tassadar
Zdravím,
nedávno mi jeden program začal padat na dekonstruktoru jedné třídy: http://pastebin.com/HhTfM7kp . Ještě sem se s níčím takovým nesetkal, a tak nevím, co s tím.
Mám pár nápadů co by to mohlo způsobovat, ale víceméně sou to jen tipy:
1. Nějáký std::list<Aura*> není smazaný před voláním dekonstruktoru(podle par poslednich radku z backtrace)
2. Dekonstruktor je volan "spatny" - viz ~Totem(), který je volaný před dekonstruktorem mateřské třídy Creature, možná to není totem ale nějáká jiná pod-třída.
3. Creature už byla smazaná v jiném vlákně(?)
Díky za všechny rady.