Я пытаюсь добавить пустой объект в список, используя метод push_back
.Ошибка сегментации, когда push_back в вектор C++
main.cpp
vector<FacialMemory> facial_memory;
printf("2\n");
// Add people face memories based on number of sections
for (int i = 0; i < QuadrantDict::getMaxFaceAreas(); i++)
{
printf("i %d\n", i);
FacialMemory n_fm;
facial_memory.push_back(n_fm); // NOTE: Breaks here
}
При вызове метода push_back
, программа вылетает с ошибкой сегментации. Я просмотрел похожие вопросы, и они указывают на решение, которое у меня есть. Я также попытался передать FacialMemory()
в вызов push_back, но все тот же вопрос.
FacialMemory класс определяется как таковую: FacialMemory.h
class FacialMemory
{
private:
vector<FaceData> face_memory;
public:
FacialMemory();
~FacialMemory();
void pushData(FaceData face);
bool isEmpty();
vector<FaceData> getFaces();
FaceData getRecent();
};
Конструктор и деструктор
FacialMemory::FacialMemory()
{
}
FacialMemory::~FacialMemory()
{
delete[] & face_memory;
}
Что находится в конструкторе класса FacialMemory? Также ваш код неэффективен, потому что вы копируете объекты повсюду. Рассмотрим использование семантики перемещения или объектов, выделенных кучей. – Dai
Ничего страшного в опубликованном коде, но достаточно места для ошибки в неопубликованном коде. [mcve], пожалуйста. – user4581301
Хорошо, я добавил конструктор и деструктор для FacialMemory – DSchana