【发布时间】:2020-12-24 17:31:40
【问题描述】:
下面我使用函数input来收集字符串并将其返回给函数main。 我将返回的指针/字符串存储在 char* 中,并在使用该变量后释放分配的内存。
但是,在我的 free 调用之后,分配的内存似乎仍然可用。
char* input();
const int MAX = 100;
int main() {
while(1) {
char * input_function_pointer = input();
printf("%p", &input_function_pointer);
puts(input_function_pointer);
free(input_function_pointer);
puts("_______");
printf("%p", &input_function_pointer);
puts(input_function_pointer);
puts("_______");
}
return 0;
}
char* input() {
char * str = malloc(MAX);
printf( "Enter a value :");
fgets( str, MAX, stdin );
return str;
}
【问题讨论】:
-
未定义的行为
-
基本上,您是在退房后使用酒店房间钥匙。你留在房间里的东西可能在那里,也可能不在那里。
-
@dbush 当拆除费用将其变成瓦砾时,您可能正在酒店房间里......