Böl ve fethet polinom algoritması uyguluyorum, böylece onu bir OpenCL uygulamasıyla karşılaştırabiliyorum, ancak mallocişe koyamıyorum. Programı çalıştırdığımda, bir sürü şey ayırıyor, bazı şeyleri kontrol ediyor size/2ve ardından algoritmaya gönderiyor . Sonra malloctekrar çizgiye bastığımda şunu söylüyor:
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
Söz konusu satır şudur:
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);
}
Boyutu a ile kontrol ettim fprintfve pozitif bir tamsayı (bu noktada genellikle 50). mallocDüz bir numara ile de aramayı denedim ve hala hatayı alıyorum. Sadece neler olup bittiğine şaşırdım ve şu ana kadar Google'dan bulduğum hiçbir şey yardımcı olmadı.
Neler olduğu hakkında bir fikrin var mı? Bir derleyici hatası olması durumunda daha yeni bir GCC'yi nasıl derleyeceğimi anlamaya çalışıyorum, ama gerçekten şüpheliyim.