昨天改了个模型,发现跟踪出问题了。吾当时猜测了一下原因,做了修改,结果还是不成功。
今天跟别人一齐查,结论是:改的思路是对的,问题在于,修改的是复制实例,不是原实例。代码如下:
//Vector<BBoxInfo> detected;
int object_num = detected->numObjects;
for (int i=0; i<object_num; i++)
{
BBoxInfo info = detected->object[i];
info.label = DECTED_CLASS_PERSON;
}
正确代码是:
int object_num = detected->numObjects;
for (int i=0; i<object_num; i++)
{
detected->object[i].label = DECTED_CLASS_PERSON;
}
最早使用这个Vector的时候,吾亦觉得可能有问题。因为一直没有涉及到修改,所以一直没问题。这次一修改,终于出错了。所以吾虽然不喜欢使用指针,更避免使用对象。使用对象一个是复制了实例,另外一个就是不小心就忘记了。
使用指针,自然就会产生释放问题,释放就有一个释放时间,早了不行,晚了就忘记了。这……