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