gdb でプログラムを実行すると、次のようになります。
fem.o: malloc.c:3096: sYSMALLOC: アサーション `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2]))) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~(((2 * (sizeof) (size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' が失敗しました。
プログラムがシグナル SIGABRT を受信し、中止されました。__kernel_vsyscall () の 0xb7fe1424
このコードの後にこのエラーが発生することがわかりました:
problem->y0 = (double *)calloc(n_tot, sizeof(double));
問題は、メンバーとして double *y0 を持つ構造体です。
以前の関数で、私はこれを行います
problem = (fem_problem *)calloc(1, sizeof(fem_problem));
エラーも問題もありません== NULL。
いくつかの提案?
追加:
n_tot の内容は確認済みです。正しい番号です。