字符串free()问题,请教
#include <stdio.h>
#include <string.h>
#include<malloc.h>
void main()
{
char str[100] = "kall";
char * tstr;
tstr=(char *)malloc(strlen(str));
strcpy(tstr,str);
printf("%s\n",tstr);
//free(tstr); //free以\0结束释放
}
上述程序会正常输出,结果为:kall。不管malloc()的参数是strlen(str)还是strlen(str)+1,都能正常输出kall!
但是如果不注释掉free(tstr),并且malloc(strlen(str))时,运行时就会出debug error错误!
free()通过指针tstr已经知道要释放空间的类型和大小了,即char类型,strlen(str)个字节空间。那么为什么会出现上面的错误呢!