这是个很诡异的问题。
vector内放的是一个二维空间内的一个坐标值。
vector< FAVector2D<unsigned int> > m_FPs;
FAVector2D这个模板,我自己定义的,用了少说有几个月了没出过问题,昨天偏偏在执行push_back操作时出现错误
Invalid Address specified to RtlValidateHeap( 003D0000, 003B7878 )
,debug跟踪到堆里边内存操作,是某个地方释放内存pUserData出错了。即是内存越界问题啦。
百度搜到的解都说是因为自定义类的拷贝构造,赋值函数等有问题。
查了半天也没看出是啥问题,想还是换个类吧。自己定义的可能有问题一时半会儿也查不出来。
正好这几天看了点OGRE的代码,就从里边剪出来一个Vector2的类,能够实现我要的东西。
这下总该好了吧,就在觉得峰回路转,柳暗花明时,“bang!”又报错了!搞了一晚上都没搞定。
百度中能想到的关键词都搜了,Primer都翻了几遍关于vector操作的也不行。
哎~正在无可奈何时,出现一点曙光:
在m_FPs所在类的构造函数中加了一句:m_FPs.reserve(100);
OK! 搞定!
哎,还是编码习惯不好。使用stl时应该估算程序使用内存大小,做个预留。嗯以后谨记啊!mellow!
正在high时,旁边正在调整分区容量的笔记本上,PM罢工啦!靠!重启以后进不了grub啦!幸好在实验室,临时刻了一张
ubuntu 7.10 的live CD。恢复了grub。
NND,以后硬盘大小还是不要随便调整的好。
