Я пытаюсь создать вектор структур, каждый из которых имеет массив указателей. Однако я не могу удалить вектор без проблемы с памятью.C++ вектор structs с указателями
Когда я бегу Valgrind
== 29801 == Недопустимый свободный()/удалить/удалить []/перераспределить() == 29801 == в 0x4A05A36: оператор удаления (vg_replace_malloc.c: 515) == 29801 == by 0x4009D4: test_struct :: ~ test_struct() (в /home/hltcoe/rcotterell/code-switching/a.out) == 29801 == 0x40142B: void std :: _ Destroy (test_struct *) (в /home/hltcoe/rcotterell/code-switching/a.out) == 29801 == 0x401299: void std :: _ Destroy_aux :: __ destroy (test_struct *, test_struct *) (в/home/hltcoe/rcotterell/кодовое переключение/a.out)
EDIT
#include <vector>
using namespace std;
struct test_struct {
public:
int * array;
test_struct() {
array = NULL;
}
~test_struct() {
delete[] array;
}
private:
test_struct(const test_struct& that);
test_struct& operator=(const test_struct& that);
};
int main(int argc, char ** argv) {
vector <test_struct> data;
for (int i = 0; i < 5; ++i) {
test_struct tmp;
tmp.array = new int[5];
data.push_back(tmp);
}
}
И это дает следующее сообщение об ошибке компиляции. Есть идеи?
возможно дубликат [Что такое правило трех?] (http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three) – juanchopanza