【发布时间】:2015-06-21 16:46:08
【问题描述】:
我创建了一个旨在获取用户输入的函数。它要求将内存分配给保存用户输入的变量;但是,该变量在函数末尾返回。释放分配的内存/返回变量值的正确方法是什么?
代码如下:
char *input = malloc(MAX_SIZE*sizeof(char*));
int i = 0;
char c;
while((c = getchar()) != '\n' && c != EOF) {
input[i++] = c;
}
return input;
输入的地址用完后是否应该返回并释放?
很好奇释放输入变量的最合适方法。
【问题讨论】:
-
如果你
malloc,最终会有人需要free,无论是你在另一个api还是调用者。相关的,如果在您的目标平台上受支持,getline,一个添加到 POSIX.1-2008 的库函数,似乎几乎做你想要实现的事情。它仍然需要调用者最终free任何返回的分配,但还提供重用语义,您的代码不。根据预期用途和目标平台,可能值得考虑。