c++ - 用大小初始化的 vector ,无法清除

标签 c++ vector resize garbage

我有一个多维 vector 的声明

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

然后我在创建它时将它发送到我的类(class):

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 vector 填充主要的 front_objects,这可能共享一些 ofxImages vector 的 vector 。

问题是“有时” vector 是用垃圾初始化的,当试图用垃圾清除它时

front_objects[numTag].resize(2);

程序因 EXC_BAD_ACCESS 而崩溃

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

谢谢

马克

更新

我试过这样做,但我得到“未初始化的引用成员‘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 &

最佳答案

最有可能在

front_objects[numTag].resize(2);

numTag 包含无效索引。

没有相关代码就不好说了。实际上,您是在说每次走进厨房时都会听到一种奇怪的声音。卡在两个东西之间的猫的图片使它很可能是猫,但也可能是别的东西。 :-)

干杯,

关于c++ - 用大小初始化的 vector ,无法清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4096418/

相关文章:

java - 为什么我的 jFrame 只在我调整窗口大小时更新?

css - 使用 CSS(无 JavaScript)在悬停时放大和移动图像 IE 9 及更高版本

javascript - 使用 jqueryui/jquery 调整 div 的 padding-top 大小

c++ - 没有运行时环境的断言

c++ - 关于在 C/C++/Assembly 中返回多个值

C++ 字符串与 vector <char>

c++ - 如何在 C++ 中快速计算 vector 的归一化 l1 和 l2 范数?

c++ - 使用 vector 进行二进制搜索

c++ - 谷歌测试 : error LNK2019: unresolved external symbol with Visual Studio 2013

c++ - 未找到链接器标志/Boost——将 Boost 文件系统与 Xcode 链接