要重新建立一组条件反射了:
pure virtual method called(纯虚函数被调用)=> object destroyed(对象已析构)=> std::vector reallocated(std::vector发生了重新分配内存)
思维还是太死板啊!其实早就应该想到了~
事情呢,其实是这样子滴:
- 首先呢,我写了一门类似JavaScript的脚本语言,给它取了个华丽丽的名字叫做VScript;
- 然后呢,这个脚本语言支持函数调用,可以调用C++编写的函数;
- 调用函数的时候呢,不小心掉了一个参数;
- 参数列表呢,是使用std::vector来传递的;
- 于是呢,当C++函数体使用到没有传过来的参数时,就导致了std::vector的自动增长;
- 这个自动增长呢,刚好又遇上了内存重新分配(std::vector每增长两倍重分配一次内存)
- 所以呢,前面的参数就华丽丽地析构掉了~(啊!!!)
- 最后呢,我使用前面的参数就会导致纯虚函数被调用啦~
- 解决的办法呢,很简单:把std::vector换成std::deque就搞定啦~
P.S.: 太奇怪的问题,问google,比问GDB要好。
posted on 2009-02-22 14:50
踏雪赤兔 阅读(1860)
评论(5) 编辑 收藏 引用 所属分类:
玩转编程