我想使用之前带有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
我应该如何修改代码才能使其正常工作?
答案 0 :(得分:2)
你现在正在做的事实上是告诉getline
有一个指向地址1024
的指针,你真的希望它取消引用它。传递一个真实的地址作为第二个参数,不要施放int
并希望最好。
size_t size = BUFSIZ;
getline(&buf, &size, in);