分割統治多項式アルゴリズムを実装しているので、OpenCL 実装に対してベンチマークできますが、作業に取り掛かることができませんmalloc
。プログラムを実行すると、たくさんのものを割り当て、いくつかのものをチェックしてsize/2
から、アルゴリズムに送信します。次に、malloc
もう一度行を押すと、次のように吐き出されます。
malloc.c:3096: sYSMALLOc: Assertion `(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)' failed.
Aborted
問題の行は次のとおりです。
int *mult(int size, int *a, int *b) {
int *out,i, j, *tmp1, *tmp2, *tmp3, *tmpa1, *tmpa2, *tmpb1, *tmpb2,d, *res1, *res2;
fprintf(stdout, "size: %d\n", size);
out = (int *)malloc(sizeof(int) * size * 2);
}
でサイズを確認したfprintf
ところ、正の整数 (通常はその時点で 50) です。malloc
普通の番号でも電話をかけてみましたが、それでもエラーが発生します。私は何が起こっているのか困惑しているだけで、これまでに見つけた Google からの情報は役に立ちません。
何が起こっているのですか?コンパイラエラーの場合に備えて、新しいGCCをコンパイルする方法を見つけようとしていますが、本当に疑問です。