Warum erhalte ich einen C malloc-Assertionsfehler?

Ich implementiere einen Divisions- und Eroberungs-Polynomalgorithmus, damit ich ihn mit einer OpenCL-Implementierung vergleichen kann, aber ich kann nichtmalloc arbeiten. Wenn ich das Programm starte, ordnet es ein paar Dinge zu, prüft einige Dinge und sendet dann dassize/2 zum Algorithmus. Wenn ich dann das @ drücmalloc line wieder spuckt es das aus:

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) 'fehlgeschlagen. Abgebrochen

Die fragliche Zeile lautet:

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);
}

Ich habe die Größe mit einem @ überprüfprintf, und es ist eine positive ganze Zahl (normalerweise 50 an diesem Punkt). Ich habe versucht, @ anzurufmalloc auch mit einer einfachen Nummer und ich bekomme immer noch den Fehler. Ich bin nur ratlos, was los ist, und nichts von Google, was ich bisher gefunden habe, ist hilfreich.

Irgendwelche Ideen was ist los? Ich versuche herauszufinden, wie man einen neueren GCC kompiliert, falls es sich um einen Compilerfehler handelt, aber ich bezweifle es wirklich.

Antworten auf die Frage(16)

Ihre Antwort auf die Frage