关于动态空间问题:下面程序为什么在执行free函数时出错?
#include<stdio.h>
#include<stdlib.h>
void main()
{
char *s;
s=(char *)malloc(sizeof(char));
gets(s);
puts(s);
free(s);
s=NULL;
}
[解决办法]
- C/C++ code
#include<stdio.h>#include<stdlib.h>void main(){char *s;s=(char *)malloc(sizeof(char*)); //把这里改成char*就行了,s为指针,原来的分配空间的不够gets(s);puts(s); free(s);s=NULL;}
[解决办法]
错,不在于free。而是因为,s=(char *)malloc(sizeof(char));只申请了一个空间,装不了一个字符串。楼主可以适当增大申请的空间。比如s=(char *)malloc(100*sizeof(char));