c - 我是否需要释放一个从函数接收动态分配对象的指针?

标签 c pointers dynamic malloc

我正在实现一个从标准输入中读取 C 语言行的函数。这是代码:

char * stdin_getline(){
  unsigned buffer_size = 100;
  char *string = malloc(buffer_size);
  char *string_temp;
  char temp;
  int i=0;
  while(1) {
    scanf("%c", &temp);
    if (temp == '\n') {break;}
    if (i == buffer_size-1) {
      *(string+buffer_size) = '\0';
      string_temp = malloc(buffer_size);
      strcpy(string_temp, string);
      free(string);
      buffer_size *= 2;
      string = malloc(buffer_size);
      strcpy(string, string_temp);
      free(string_temp);
    }
    *(string+i) = temp;
    i++;
  }
  *(string+i+1) = '\0';
  return string;
}

int main() {
  char *temp_line;
  temp_line = stdin_getline();
  printf("%s\n", temp_line);
  free(temp_line); // Is this line needed?
  return 0;
}

我真的需要释放 main 函数中的 temp_line 指针吗?

最佳答案

函数调用与问题无关。由 malloc 分配的所有内容都必须使用 free 释放以避免内存泄漏。

关于c - 我是否需要释放一个从函数接收动态分配对象的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58645567/

相关文章:

c - 使用接口(interface)的质数

c - Makefile 中缺少 src 代码文件

c++ - Windows API 如何接受字符串

java - 我想找到图像的坐标

mysql - 批评我的 MySQL 数据库设计无限动态字段

c++ - 如何从运算符函数返回动态对象?

python - 如何在类初始化期间添加在字符串中编码的动态方法?

c中的转换

c - 编写链表实现时出现的 C 指针问题

c - 未初始化的指针的计算结果是 true、false 还是导致未定义的行为?