在我的头文件中,我将此向量定义为指针。
private:
vector<filteredPoint_t> *filteredValues;
在我的cpp文件中,我想向此向量添加(struct)filterPoint_t
的实例。它编译。</ p>
filteredPoint_t fp;
fp.filteredValue = 3.4;
fp.globalIndex = 3;
filteredValues->push_back(fp);
但是,当我运行它时,它会在调用filteredValues->push_back(fp)
后立即停止。甚至没有显示prinf
控制台输出。虽然在控制台上没有错误消息。
我在这里缺少什么?
一些背景信息:我需要将filteredValues
传递给多个线程。这样每个线程都可以写回这个变量。因此我认为我会使用指针变量来执行此操作。
答案 0 :(得分:3)
您需要先分配内存(可能是构造函数)或将其指向有效的vector<filteredPoint_t>
地址:
filteredValues = new vector<filteredPoint_t>() ;
然后您可以使用push_back
。
此外,请确保在析构函数
中取消分配使用new
分配的内存
delete [] filteredValues ;
答案 1 :(得分:3)
这是一个指针,这意味着它必须指向有效的东西才能被使用:
vector<filteredPoint_t> *filteredValues;
如果你没有,你将取消引用一个未初始化的指针并调用未定义的行为。
初始化意味着:
指出有效的东西(即已经存在的载体)
filteredValues = &existingVectorOfTheSameType;
自己创建一个新的堆矢量,例如
filteredValues = new vector<filteredPoint_t>();