У меня возникают проблемы со следующим битом кода. Я использую Boost для выполнения матричного умножения. Я использую Gtesting для проверки кода. Когда я тестирую следующий бит кода, я получаю следующую ошибку.Ошибка сегментации (сбрасывание ядра) -cannot fix error
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;
}
Благодарим за помощь. Эта ошибка сводит меня с ума.
* Где * происходит авария? Запустите debug-build в отладчике, чтобы поймать крах в действии, и используйте отладчик, чтобы найти сайт сбоя в вашем коде. –
Вы сказали, что попробовали пару вещей. Что вы пробовали? Вы пытались использовать 'gdb'? – lurker
Непосредственная очевидная ошибка заключается в том, что вы не инициализируете 'temp1' (не выделяете пространство для его указания), а затем присваиваете значение' * temp1'. Это был надзор? Или вам нужно изучить основы указателей в C/C++? – JSF