クラス がありBar
、そのコンストラクターstd::vector
は型Foo
(別のクラス) を初期化します。
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
ます。
2 番目の反復も問題なく動作しているように見えますが、3 番目の反復を開始するために戻ったときにプログラムがクラッシュします。
_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
。