小编wos*_*hen的帖子

如何正确释放与getline()函数相关的内存?

我刚刚开始编程并有一个初学者的问题,我想编写一个函数来逐行读取未知长度的文件.因为我不知道每行的长度所以我使用了getline()函数:

void readDict(FILE *dict_file){
  //Read dic 
  char *line;
  size_t len = 0, read;
  while((read = getline(&line, &len, dict_file))!=-1){
    check(line); 
  }
  free(line);
  return;
}
Run Code Online (Sandbox Code Playgroud)

因为getline()有点类似于malloc()realloc()字符串,所以如果我继续使用这个函数来读取很多未知长度的行,我会得到内存泄漏还是内存不足?

c pointers getline dynamic-memory-allocation

8
推荐指数
1
解决办法
5507
查看次数

在C中为字符串分配内存

我刚刚开始C编程,我有一个初学者的问题:

int main(int argc, char *argv[])
{ 
char *a=malloc(1*sizeof(char));
a[0]='a';
a[1]='b';
a[2]='c';
printf("%c\n",a[0]);
printf("%c\n",a[1]);
printf("%c\n",a[2]);
printf("%s\n",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

所以我想通过逐个输入字符来创建一个由未知长度字组成的字符串.因为我不知道单词的长度所以我只使用malloc.我计划先为一次性字符分配内存,然后在输入新字符时使用reallocate为下一个字符添加新空间.然而,在我malloc(1*sizeof(char))之后,我应该发现我可以在字符串中添加多个字符,为什么会发生这种情况?这是正确的方法吗?

感谢大家花时间阅读我的长问题:)

c string malloc char

0
推荐指数
2
解决办法
5540
查看次数

标签 统计

c ×2

char ×1

dynamic-memory-allocation ×1

getline ×1

malloc ×1

pointers ×1

string ×1