Пишу программу, которая используя библиотеку libgmp для длинной арифметики принимает число и выводит его квадрат:
#include <stdio.h>
#include <gmp.h>
#include <stdlib.h>
int main() {
mpz_t mybignum;
mpz_t mul;
char *str = malloc(sizeof(char)*10000);
scanf("%s", str);
mpz_init_set_str(mybignum, str, 10);
mpz_mul(mul, mybignum, mybignum);
free(str);
mpz_get_str (str,10 , mul);
printf("%s\n", str);
// освобождаем память
mpz_clear(mybignum);
mpz_clear(mul);
free(str);
}
компилирую, запускаю, ввожу любое число:
$ gcc ./test.c -lgmp -o test
$ ./test
12345
malloc(): unsorted double linked list corrupted
Аварийный останов
Хотел найти место, в котором происходит ошибка расставив printf'ы, но при добавлении printf в любое место, программа переставала падать с ошибкой.