STL容器使用该注意的一个问题
2010-07-27 02:24
330 查看
今天写代码用list存储了游戏对象的指针,并且每帧遍历这个list来调用游戏对象的Update和Render函数。
游戏对象有可能在自己的Update里面delete自己,在析构函数中它把自己的地址从list中删除,这个行为导致list中相应的节点数据被删除,而这个 时候用来遍历list的迭代器正指向这个节点,结果循环的++迭代器操作会产生内存访问错误。
我用的解决办法是另外用一个容器比如vector把要删除的指针存下来,待遍历调用对象的Update后再从list中把这些相应的节点删除。应该在遍历之前和之后各调用一次,因为在游戏对象的Update之外不排除有对象被从list中删除。
游戏对象有可能在自己的Update里面delete自己,在析构函数中它把自己的地址从list中删除,这个行为导致list中相应的节点数据被删除,而这个 时候用来遍历list的迭代器正指向这个节点,结果循环的++迭代器操作会产生内存访问错误。
我用的解决办法是另外用一个容器比如vector把要删除的指针存下来,待遍历调用对象的Update后再从list中把这些相应的节点删除。应该在遍历之前和之后各调用一次,因为在游戏对象的Update之外不排除有对象被从list中删除。
相关文章推荐
- spring 容器后处理器 BeanFactoryPostProcessor 使用需要注意的一个问题
- C++类中包含stl容器时,使用sizeof求大小的问题
- php array_merge函数使用需要注意的一个问题
- 一个使用手机时需要注意的问题
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 正确使用mysql + MFC的一个要注意问题
- 使用三目运算符时注意的一个问题
- 使用string.Format需要注意的一个性能问题
- STL 各种容器排序和查找算法对运算符的使用及特别注意运算符重载错误
- php中使用$_REQUEST需要注意的一个问题
- 跨dll使用template/STL需要注意的问题
- 注意C++ STL容器中erase的使用
- 第二十三篇、使用NSURLSession时需要注意一个内存泄漏问题
- 使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
- 一个菜鸟java码农的成长之路(3):ListIterator的使用及注意的问题
- 《转》使用jQuery Ajax功能的时候需要注意的一个问题
- C++ STL 如何安全的将一个含有指针变量的类对象放在容器中? 避免浅拷贝问题
- 使用MVC框架中要注意的问题(二):将Model和Controller单独用一个项目设计
- 使用输入文件流的eof()时要注意一个问题
- 使用string.Format需要注意的一个性能问题