コードで、(ヒープではなく) スタックでベクトルを宣言し、「set」関数を使用して別のクラスのメンバー変数をこのベクトルに設定していることに気付きました。唯一の問題は、関数 (myFunction) を終了した後、ベクターを破棄する必要があり (スタック上にあるため)、このベクターへの参照が「意味がない」ことを指す必要があることです。しかし、私のコードは正しく機能しているので、その理由を自問していました。ベクトルがあったメモリの部分は、今まで誰も削除しなかったために存在しているので、幸運でしょうか? 私のコードがクラッシュしないのは運の問題ですか?コードは次のとおりです。
void myFunction() {
std::vector<std::vector<double>> vDoubleVector = MyUtils::CreateDoubleVector(); //Creates a
double vector (but not on heap)
MyClass mC;
mC.SetDoubleVector(vDoubleVector);
}
class MyClass {
std::vector<std::vector<double>> mDoubleVector;
void SetDoubleVector(std::vector<std::vector<double>>& aDoubleVector) {
mDoubleVector = aDoubleVector;
}
}