Ошибка сегментации (ядро сброшено) — невозможно исправить ошибку

У меня проблемы со следующим фрагментом кода. Я использую Boost для умножения матриц. Я использую Gtesting для тестирования своего кода. Когда я тестирую следующий бит кода, я получаю следующую ошибку.

Segmentation fault (core dumped)

Я знаю, что это связано с указателями, которые я использую, но я не могу найти ошибку. Я попробовал пару вещей, но безуспешно. Мой код следующий. Я использую Ubuntu 14.04.

BLAS::matrix<double>* PolyFilter::getCoef(const std::queue<double> y const std::queue<double> x, const BLAS::vector<double>& w)
{
int size = y.size();
queue<double> yList = y;
BLAS::matrix<double> pos(size,1);
BLAS::matrix<double>* vand = makeVandermondeMatrix(x);
BLAS::matrix<double>* weights = makeDiag(w);
BLAS::matrix<double> *temp1,*temp2,*temp3,*temp4,*temp5;
BLAS::matrix<double>* temp6 = new BLAS::matrix<double>(size,size);
std::cout<<size<<endl;for( unsigned int i = 0; i < size; i++)
{
pos.insert_element(i,0,yList.front());
yList.pop();
}

*temp1 = BLAS::prod(BLAS::trans(*vand), *weights);

*temp2 = BLAS::prod(*temp1, *vand);if( rfalInverse(*temp2, *temp3) )
{
*temp4 = BLAS::prod(*temp3, BLAS::trans(*vand));
*temp5 = BLAS::prod(*temp4,*weights);
*temp6 = BLAS::prod(*temp5, BLAS::trans(pos));
}return temp6;

}

Спасибо за любую помощь. Эта ошибка сводит меня с ума.

0

Решение

Вы объявили несколько указателей:

BLAS::matrix<double> *temp1,*temp2,*temp3,*temp4,*temp5;

И тогда вы немедленно приступаете к разыменованию неинициализированных указателей:

*temp1 = BLAS::prod(BLAS::trans(*vand), *weights);

*temp2 = BLAS::prod(*temp1, *vand);

Там твоя проблема.

Постскриптум Вы должны потратить некоторое время на изучение того, как использовать отладчик. Это должно быть тривиально, чтобы разобраться с отладчиком.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]