C - как правильно использовать массив malloc с функцией getline C? - PullRequest
0 голосов
/ 06 марта 2012

Я хочу использовать ранее массив malloc с функцией getline C:

ssize_t getline(char **restrict, size_t *restrict, FILE *restrict)

Следующий код дает мне EXC_BAD_ACCESS (код = 1, адрес = 0x400):

FILE *in; if ((in=fopen(inpath, "r+w"))==NULL) exit(1);
char * buf = (char *) malloc (BUFSIZ); // BUFSIZ is constant, equal to 1024
if (getline(&buf, (size_t *)BUFSIZ, in)<0) return 1; // <--- EXC_BAD_ACCESS

Как мне изменить код, чтобы он работал?

1 Ответ

2 голосов
/ 06 марта 2012

То, что вы делаете сейчас, по существу говорит getline, что есть указатель на адрес 1024, и вы действительно хотите, чтобы он разыменовал его.Передайте реальный адрес в качестве второго аргумента, не разыгрывайте int и надейтесь на лучшее.

size_t size = BUFSIZ;
getline(&buf, &size, in);
...