Я пытаюсь создать многопоточную программу, которая вычисляет простой множитель каждого входа (каждый вход имеет свой собственный поток). Использование 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