调用时 gsl gnu 科学库分段错误 gsl_blas_ddot
gsl gnu scientific library segmentation fault when calling gsl_blas_ddot
当我编译下面的代码时,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 向量已正确分配。
我不熟悉那个库,但是,发布的源代码有这样的声明:
double *result ;
但是,指针 result
从未设置为指向应用程序拥有的任何内存。
建议改为:
double result;
并修改以下行:
gsl_blas_ddot(v, v2, result) ;
至
gsl_blas_ddot(v, v2, &result) ;
当我编译下面的代码时,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 向量已正确分配。
我不熟悉那个库,但是,发布的源代码有这样的声明:
double *result ;
但是,指针 result
从未设置为指向应用程序拥有的任何内存。
建议改为:
double result;
并修改以下行:
gsl_blas_ddot(v, v2, result) ;
至
gsl_blas_ddot(v, v2, &result) ;