Я получаю ошибку сегментации 11, когда вызываю эту функцию
void flexibleArray(int *array, int *length) {
int cnt = 0, number = 0;
while (number!=-1) {
printf("\nInsert the variable :"); scanf("%d", &number);
if (number!=-1){
cnt++;
array = realloc(array, cnt * sizeof(int));
array[cnt-1] = number;
}
}
*length = cnt;
}
как
int *array = NULL, arrayLength;
flexibleArray(array, &arrayLength);
Это действительно простая функция, которую я всегда использовал, и я непоймите, почему это дает мне эту ошибку прямо сейчас.Я играл с ним, пытаясь поймать линию, которая создает мне проблему, и я обнаружил, что снятие линии *length = cnt;
, очевидно, не доставляет мне проблемы.Могу ли я избежать ошибки, сохраняя эту строку?Спасибо
ПРАВИЛЬНЫЙ КОД:
int* flexibleArray(int *length) {
int *flexArray = NULL;
int cnt = 0, number = 0;
while (number!=-1) {
printf("\nInsert the variable :"); scanf("%d", &number);
if (number!=-1){
cnt++;
flexArray = realloc(flexArray, cnt * sizeof(int));
flexArray[cnt-1] = number;
}
}
*length = cnt;
return flexArray;
}
и в main ()
int *array = NULL, arrayLength;
array = flexibleArray(&arrayLength);