C - 如何正确使用带有C getline函数的malloc'ed数组?

时间:2012-03-05 20:30:39

标签: c file getline

我想使用之前带有C getline函数的malloc'ed数组:

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 个答案:

答案 0 :(得分:2)

你现在正在做的事实上是告诉getline有一个指向地址1024的指针,你真的希望它取消引用它。传递一个真实的地址作为第二个参数,不要施放int并希望最好。

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