Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 访问冲突写入位置错误_C_Gsl - Fatal编程技术网

C 访问冲突写入位置错误

C 访问冲突写入位置错误,c,gsl,C,Gsl,我在这里查看此代码: #include <stdio.h> #include <gsl/gsl_rng.h> #include <gsl/gsl_randist.h> #include <gsl/gsl_permutation.h> int main ( ) { const long N = 10; const gsl_rng_type *T = NULL; gsl_rng *r = NULL; gsl_pe

我在这里查看此代码:

#include <stdio.h>
#include <gsl/gsl_rng.h>
#include <gsl/gsl_randist.h>
#include <gsl/gsl_permutation.h>



int main ( ) {
    const long N = 10;
    const gsl_rng_type *T = NULL;
    gsl_rng *r = NULL;

    gsl_permutation *p = NULL;
    p = gsl_permutation_alloc ( N );
    gsl_permutation *q = NULL;
    q = gsl_permutation_alloc ( N );

    gsl_rng_env_setup ();
    T = gsl_rng_default;
    r = gsl_rng_alloc ( T );

    printf ( "initial permutation: " );
    gsl_permutation_init ( p );
    gsl_permutation_fprintf ( stdout, p, " %u" );
    printf ( "\n" );

    printf (" random permutation:");  
    gsl_ran_shuffle (r, p->data, N, sizeof(size_t));
    gsl_permutation_fprintf (stdout, p, " %u");
    printf ("\n");

    printf ( "inverse permutation: " );
    gsl_permutation_inverse ( q, p );
    gsl_permutation_fprintf ( stdout, q, "%u" );
    printf ( "\n" );

    gsl_permutation_free ( p );
    gsl_permutation_free ( q );

    return 0;
}
#包括
#包括
#包括
#包括
int main(){
常数长N=10;
常量gsl_rng_type*T=NULL;
gsl_rng*r=NULL;
gsl_置换*p=NULL;
p=gsl_置换_alloc(N);
gsl_置换*q=NULL;
q=gsl_置换_alloc(N);
gsl_rng_env_setup();
T=gsl\u rng\u默认值;
r=gsl_rng_alloc(T);
printf(“初始排列:”);
gsl_置换_初始(p);
gsl_置换_fprintf(stdout,p,“%u”);
printf(“\n”);
printf(“随机排列:”);
gsl_运行_shuffle(r,p->data,N,sizeof(size_t));
gsl_置换_fprintf(stdout,p,“%u”);
printf(“\n”);
printf(“逆置换:”);
gsl_置换_逆(q,p);
gsl_置换_fprintf(标准值,q,“%u”);
printf(“\n”);
无gsl_置换(p);
gsl_置换_自由(q);
返回0;
}
然而,当我试图编译它时,我得到了未处理的异常:访问冲突写入位置错误。 我相信,我为所有指针分配了内存,但错误仍然存在。 我不太熟悉C语言,因此,如有任何意见,将不胜感激。 另外,当我使用调试器时,它指向这一行:
gsl\u置换\u fprintf(stdout,P,“%u”)
谢谢


编辑:我已经仔细研究了代码,意识到问题可能出在那里的stdout语句中

不应该
gsl_rng_env_setup()首先被调用?之前,您需要执行两次
gsl\u置换\u alloc