刚刚在调试malloc出来字符串长度时发现最后输出strlen(a)总是比sizeof(a)后面乘的数多4,这是为什么?多出来的4是哪里的?新手提的问题比较笨,希望能解决,谢谢~
#include
#include
int main() {
char *a = (char *)malloc( sizeof(char) * 4 );
printf( "strlen(a)=%d\n", strlen(a) ); //输出总是多4
return 0;
}
不明白你的多4指的是什么
我在机器上运行的是这个结果,我用的是VC 6.0, 是不是编译器不同??
上感觉说的还不错,他的意思好像是因为只malloc了没有初始化,所以malloc空间如果是不连续的,编译器不知道哪里会有'\0',而strlen只有找到'\0'才会返回字符串的长度,所以strlen一个malloc的字符串不会正好返回我sizeof()后乘的那个数。不知道是不是这个原因??看来又要和编译原理有关了,还得继续学习啊~