c - 访问冲突写入位置错误

标签 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_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;
}

但是,当我尝试编译它时,出现未处理的异常:访问冲突写入位置错误。 我相信,我为所有指针分配了内存,但错误仍然存​​在。 我对 C 不太熟悉,所以任何意见都会受到赞赏。 附:当我使用调试器时,它指向这一行: gsl_permutation_fprintf ( stdout, p, "%u"); 谢谢

编辑:我已经研究过代码并意识到问题可能出在标准输出语句中。

最佳答案

不应该首先调用gsl_rng_env_setup ();吗?您之前执行过几次 gsl_permutation_alloc

关于c - 访问冲突写入位置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749874/

相关文章:

c++ - 递增if语句arduino

C - 在跟踪索引的同时对 float 组进行排序

fft - GSL 快速傅立叶变换 - 变换高斯的非零虚数?

c - 在 gsl 中分配复数

C 编程控制到达非空/段错误结束

c - Linux套接字绑定(bind)连接

c - char指针零是什么意思?

python - 链接外部 C 库时来自 Cython 的 ImportError

c - gsl_rng_default Unresolved external 错误

python - 如何处理 GSL 集成中的错误