我有一个类Bar
,其构造初始化Foo
类型(另一个类)的std::vector
。内存泄漏,矢量后推C++
Bar.cpp
Bar::Bar(int n) {
for(int i = 0; i < n; i++) {
Foo foo;
foo.somefunction(i);
vec.push_back(foo) //this should insert foo into the vector
}
}
Bar.h
class Foo;
class Bar {
std::vector<Foo> vec;
};
当我调试,施工的第一次迭代工作正常。 foo
已创建,foo.somefunction()
正常运行,并且foo
被推入vec
。
第二个interation似乎也很好,但程序崩溃时,它回到开始第三次迭代。
我得到_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
错误和HEAP CORRUPTION DETECTED
。
Foo
是一个包含动态创建数组的类,没什么特别的。 事情是这样的:
Foo::Foo() {
solution = new float[size];
// some function that initializes the elements of solution
}
和常规析构函数~Foo() {delete [] solution;}
。我不认为问题来自Foo
。
规则三可能。 – chris 2013-03-13 17:25:55
你已经使用了'Foo'的矢量。你为什么不使用“浮动”的矢量呢?我敢打赌你的问题会神奇地消失。 – jrok 2013-03-13 17:27:59
我试过用这种方法声明一个float的向量: std :: vector vec(size); 但它不起作用。任何方式来声明在运行时确定的大小的向量? –
jazzybazz
2013-03-13 17:50:54