Om maar gelijk met de deur in huis te vallen, ik zit methet volgende probleem: als ik over een std::map heel loop crasht het programma (het crasht niet structureel op één punt).
Dit is be gerbuikte code:
Het prgramma is gecompiled onder vs2005 zonder optimalisaties en met debug options.
De visual studio debugger geeft in de locale waarde weer dat iter->second niet bestaat maar iter->ptr->second wel. Het iter->ptr->second bevat dan de laaste object uit de map. De applicatie crasht niet alleen in deze loop maar ook in andere soort gelijke loops, is er een manier om dit te voorkomen.
Dit is be gerbuikte code:
C++:
1
2
3
4
5
6
7
8
9
| UpdateClass::Update(std::map<OBJECT_HANDLE, Object *> &m) { std::map<OBJECT_HANDLE, Object *> tmp(m); for(std::map<OBJECT_HANDLE, Object*>::iterator iter=tmp.begin(); iter != tmp.end(); ++iter) iter->second->Update(i_diff); } |
Het prgramma is gecompiled onder vs2005 zonder optimalisaties en met debug options.
De visual studio debugger geeft in de locale waarde weer dat iter->second niet bestaat maar iter->ptr->second wel. Het iter->ptr->second bevat dan de laaste object uit de map. De applicatie crasht niet alleen in deze loop maar ook in andere soort gelijke loops, is er een manier om dit te voorkomen.
http://www.tweakers.net/gallery/119170/sys