それぞれがポインターの配列を持つ構造体のベクトルを作成しようとしています。ただし、メモリの問題がなければベクターを削除できないようです。
valgrind を実行すると
==29801== 無効な free() / delete / delete[] / realloc() ==29801== at 0x4A05A36: operator delete (vg_replace_malloc.c:515) ==29801== by 0x4009D4: test_struct::~test_struct( ) (/home/hltcoe/rcotterell/code-switching/a.out 内) ==29801== by 0x40142B: void std::_Destroy(test_struct*) (/home/hltcoe/rcotterell/code-switching/a.out 内) out) ==29801== by 0x401299: void std::_Destroy_aux::__destroy(test_struct*, test_struct*) (/home/hltcoe/rcotterell/code-switching/a.out 内)
編集
#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);
}
}
そして、次のコンパイルエラーが発生します。何か案は?