【发布时间】:2014-05-08 11:18:49
【问题描述】:
假设我们有以下场景。
char* halfString(char* input) {
char* output = malloc(strlen(input));
int i = 0;
for(i = 0; i < strlen(input); i++)
output[i] == input[i];
output[i] = '\0';
return output;
}
int main() {
char* input = "Hello";
char* output = halfString(input);
printf("%s\n",output);
free(output);
}
调用“free(output)”是否会释放 main 本地的 char* 输出的内存并释放 halfString() 本地的 char* 输出的内存?或者 halfString() 本地的 char* 输出是否仍然存在内存泄漏?
感谢任何帮助。
【问题讨论】:
-
您可能还想实际分配足够的空间。您目前是一个
char短。strlen(),您应该只调用一次并保存到本地以用于您的枚举,返回长度没有终止符。你的数学应该使用strlen(input)+1。
标签: c memory-leaks malloc free