我試圖使用聲明如下向量的矩陣:C++矢量分配錯誤,段故障
vector<vector<Neurone*>* > Neurones;
我已經通過的方式產生的一類神經元。
這是代碼:
NeuralNetwork::NeuralNetwork(vector<int> NeuroneNumbers, vector<vector<vector<double>* >* > lw)
{
for (int i = 0; i < NeuroneNumbers.size(); i++)
{
if (i == 0)
{
Neurones.push_back(new vector<Neurone*>());
for (int j = 0; j < NeuroneNumbers[i]; j++)
{
Neurones[i]->push_back(new Neurone(new Neurone[0], new double[0]));
if (j == NeuroneNumbers[i] - 1)
{
(*Neurones[i])[j]->Value = 1;//Here is the error ! with i=0 j=0 segmentation fault !
}
}
}}
您的第一個也是最大的問題是,當您真的不需要使用指針時。在C++中,很少需要指針。 –
如果不知道「Neurone」是什麼樣子,很難判斷出了什麼問題。然而,'新的Neurone [0]'和'new double [0]'看起來很奇怪的事情!你爲什麼要分配零長度數組?我也衷心地建議你閱讀'std :: unique_ptr'和'std :: shared_ptr',而不是在這種情況下使用原始指針。 – Rook
我強烈推薦使用[智能指針](http://en.cppreference.com/w/cpp/memory)代替原始指針,並自己調用'new()'/'delete'來解決你的問題! –