realloc (): неверный следующий размер, делающий программу p_thread - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь создать многопоточную программу, которая вычисляет простой множитель каждого входа (каждый вход имеет свой собственный поток). Использование realloc или calloc с именем int *, ввод большого числа или большого количества потока {1..100} дает мне realloc: неверный размер или ошибку malloc.c. Я не уверен, что это проблема с глубоким указателем, но мне нужны выходные данные: ./thread {1..10} 1: 2: 2 3: 3 4: 2 2 5: 5 и т. Д. .... 10: 2 5

 int size = 5;
    int* primeNumbers = (int*)calloc(size,sizeof(int));
    int n = atoi(param);
    //sum = 0;
    int counter = 0;

    //Add original value to int* primeNumbers for return printing
    primeNumbers[counter] = n;
    counter++;

    while (n % 2 == 0)
    {
            printf("%d ", 2);
            //If max allocated memory is reached, double memory size
            if (counter == size)
            {
                    size = size * 2;
                    primeNumbers = realloc(primeNumbers,size*sizeof(int));
                    primeNumbers[size] = 0;
            }
            primeNumbers[counter] = 2;
            counter++;
            n = n/2;
    }

    for (int i = 3; i <= sqrt(n); i = i + 2)
    {
            while (n % i == 0)
            {
                    printf("%d ",i);
                    //If max allocated memory is reached, double memory size
                    if (counter == size)
                    {
                            size = size * 2;
                            primeNumbers = realloc(primeNumbers,size*sizeof(int));
                            primeNumbers[size] = 0;
                    }
                    primeNumbers[counter] = i;
                    counter++;
                    n = n/i;
            }
    }




enter code here
...