矢量初始化大小,无法清除

时间:2010-11-04 12:02:21

标签: c++ vector resize clear garbage

我有一个多维向量的声明

std::vector< vector < vector  < ofxImage > > > front_objects;

然后我在创建它时将它发送给我的班级:

Catalog_object * temp = new Catalog_object(&front_objects, numTag);

然后我执行以下操作:

Catalog_object::Catalog_object(vector< vector < vector  < ofxImage > > > * _front_objects, int numTag) {
    front_objects=_front_objects;
    if (front_objects->size()<numTag+1) {
        front_objects->resize(numTag+1);
    }
}

我想要做的是使用Catalog_objects中的 ofxImages 向量填充主 front_objects ,这些向量可能会共享一些ofxImages向量的向量。

问题是“有时”向量是用垃圾初始化的,当试图用

清除它时
front_objects[numTag].resize(2);

程序因EXC_BAD_ACCESS

而崩溃

用resize()调整大小时,不应该用空向量填充吗?

由于

马克

更新

我尝试这样做,但我得到“未初始化的参考成员'Catalog_object :: front_objects'”。

Catalog_object::Catalog_object(vector< vector < vector  < ofxImage > > > & _front_objects, int numTag) { // CHANGED * FOR &
    std::vector< vector  < vector < ofxImage > > > & front_objects; // CHANGED * FOR &
    front_objects=_front_objects;
    if (front_objects.size()<numTag+1) {
        front_objects.resize(numTag+1);
    }
    front_objects[numTag].resize(2);
}


std::vector< vector < vector  < ofxImage > > > front_objects;
Catalog_object * temp = new Catalog_object(front_objects, numTag); // REMOVED &

1 个答案:

答案 0 :(得分:2)

最有可能在

front_objects[numTag].resize(2);

numTag包含无效索引。

没有相关代码很难说。你有效地说,每次走进厨房,你都会听到奇怪的声音。陷入两个事情之间的猫的照片使它很可能是猫,但可能是别的东西。 : - )

干杯&amp;第h。,