Оба getline
и calloc
выделяют память. Если вы хотите использовать getline
, не выделяйте заранее. Просто сделайте это:
int main(void)
{
char *line = NULL;
size_t size = 0;
getline(&line, &size, stdin);
free(line);
}
Намек на это, как вы называете getline
. Если вы отправляете line
, функция не сможет изменить то, на что указывает указатель. Но теперь вы отправляете &line
, что означает, что функция хочет перераспределить память.
Если вы хотите перераспределить, используйте fgets
вместо getline
.
Кроме того,main
не должно быть функцией void
.