Я пытаюсь освободить помощника. Все работает нормально, кроме бесплатного (помощник).
Эта функция должна проверять, повторяются ли числа. Может кто-нибудь помочь мне найти проблему?
int check_array(int *arr, int n) {
int i, max = 0;
for (i = 0; i < n; i++)
if (arr[i] > max) max = arr[i];
int *helper = (int*)malloc(sizeof(int) * max);
if (!helper) return;
i = 0;
while (i < max) helper[i++] = 0;
for (i = 0; i < n; i++)
helper[arr[i]]++;
for (i = 0; i < max; i++) {
while (!helper[i]) i++;
if (helper[i] > 1) {
free(helper);
return 0;
}
}
free(helper);
return 1;}
В основном это только для двух примеров.
void main() {
int arr[] = { 1,2,3,4,6,7,8,9,100,120,130,140,150 };
int arr2[] = { 1,2,3,4,8,7,8,9,100,120,130,140,150 };
int size_arr = sizeof(arr) / sizeof(arr[0]);
int size_arr2 = sizeof(arr2) / sizeof(arr2[0]);
printf("arr - %d\narr2 - %d\n", check_array(arr, size_arr), check_array(arr2, size_arr2));
}