我试图使用声明如下向量的矩阵: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'来解决你的问题! –