0
我在這裏回顧這段代碼:訪問衝突寫入位置誤差
#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,所以任何輸入將不勝感激。 P.S.當我使用調試器時,它指向這一行:gsl_permutation_fprintf (stdout, p, " %u");
謝謝
編輯:我玩過代碼並意識到問題可能出現在標準輸出語句中。