我创建了一个函数来获取用户输入。它要求为包含用户输入的变量分配内存;然而,该变量在函数结束时被返回。正确的方法是什么,以释放已分配的内存/返回变量的值?
以下是代码:
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中还是调用者。相关的,如果你的目标平台支持,在POSIX.1-2008中添加的库函数getline
似乎可以几乎实现你想要实现的功能。它仍然需要调用者最终free
任何返回的分配,但也提供了重用语义,而你的代码则没有。根据预期的使用和目标平台,考虑使用它可能是值得的。 - WhozCraig