我想了解shared_ptrs的用法。下面的簡單代碼將std :: shared_ptr << std :: vector <double>>傳遞給函數
#include<iostream>
#include<vector>
#include<memory>
void funct(std::shared_ptr<std::vector<double>> H){
H->push_back(1.00);
}
int main()
{
std::shared_ptr<std::vector<double>> H;
funct(H);
return 0;
}
給我一個分段錯誤,我似乎無法理解。我在這裏做錯了什麼?
您需要初始化'std :: shared_ptr'。默認情況下,它是一個'nullptr'。所以你需要做'H = std :: make_shared>()'。你可以像下面這樣將聲明和初始化結合起來:'auto H = std :: make_shared >()' –
Justin
[OT]因爲你不轉讓所有權,所以最好使用'void funct(std :: vector&H)'和'funct(* H);'。 –
Jarod42