【发布时间】:2014-05-11 09:24:16
【问题描述】:
我正在尝试使用这样声明的向量矩阵:
vector<vector<Neurone*>* > Neurones;
顺便说一句,我已经创建了一个类 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的样子,就很难判断出了什么问题。但是,new Neurone[0]和new double[0]看起来很奇怪!你为什么要分配零长度数组?我还衷心建议您阅读std::unique_ptr和std::shared_ptr,而不是在这种情况下使用原始指针。 -
我强烈建议您使用 smart pointers 而不是原始指针并自己调用
new()/delete来解决您的问题!
标签: c++ vector matrix segmentation-fault