天天看点

C++中Vector/Map/List中尽量使用指针,避免直接保存对象

昨天改了个模型,发现跟踪出问题了。吾当时猜测了一下原因,做了修改,结果还是不成功。

  今天跟别人一齐查,结论是:改的思路是对的,问题在于,修改的是复制实例,不是原实例。代码如下:

//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的时候,吾亦觉得可能有问题。因为一直没有涉及到修改,所以一直没问题。这次一修改,终于出错了。所以吾虽然不喜欢使用指针,更避免使用对象。使用对象一个是复制了实例,另外一个就是不小心就忘记了。

 使用指针,自然就会产生释放问题,释放就有一个释放时间,早了不行,晚了就忘记了。这……

继续阅读