Segmentation fault (core dumped) при вводе относительно длинной строки
У меня есть функция создания динамического массива ввода строки, в нее я кладу &ссылку на указатель типа char. Проблема: для небольших строк длиной примерно 15 символов или около того все отлично работает, но если в строке, к примеру, 200 символов - програма падает с ошибкой Segmentation fault (core dumped)
Почему? Заранее спасибо!
int create_array(char** arr){
char capacity = 2, tmp;
int i = 0;
(*arr) = (char*)malloc(sizeof(char) * capacity);
while ( (tmp = getchar()) != '\n' && tmp != EOF ){
*(*arr + i) = tmp;
i++; // запись размера
if (i == capacity){
capacity *= 2;
(*arr) = (char*)realloc((*arr), sizeof(char) * capacity); // расширяю массив
}
}
return i; // возврат размера
}
Ответы (1 шт):
Автор решения: gbg
→ Ссылка
Глупая ошибка - у вас capacity в char хранится, доходит до 127, потом преполнение и кирдык.