Ошибка сегментации научной библиотеки gsl gnu при вызове gsl_blas_ddot - PullRequest
0 голосов
/ 17 декабря 2018

Когда я компилирую код ниже, gcc не сообщает об ошибках:

#include <stdio.h>
#include <gsl/gsl_vector.h>
#include <gsl/gsl_blas.h>


int main (void)
{
  int i;

  gsl_vector * v = gsl_vector_alloc (3);

  for (i = 0; i < 3; i++)
    {
      gsl_vector_set (v, i, 1);
    }


  gsl_vector * v2 = gsl_vector_alloc (3);

  for (i = 0; i < 3; i++)
    {
      gsl_vector_set (v2, i, 2);
    }


  double *result ;

  gsl_blas_ddot(v, v2, result) ;


  printf("result of dot product is %f\n", *result );

  return 0;
}

Но я получаю ошибку времени выполнения:

Segmentation fault (core dumped)

ссылается на вызов gsl_blas_ddot.Я не могу понять, в чем проблема.Векторы v и v2 расположены правильно.

1 Ответ

0 голосов
/ 18 декабря 2018

Я не знаком с этой библиотекой, однако опубликованный исходный код имеет следующее утверждение:

double *result ;

однако указатель result никогда не устанавливается для указания на любую память, которой владеет приложение.

Предложите изменить на:

double result;

и изменить следующую строку:

gsl_blas_ddot(v, v2, result) ;

на

gsl_blas_ddot(v, v2, &result) ; 
...