高手指教,malloc分配空间的大小问题
请问各位前辈 malloc函数非配的空间大小是不是一般比指定的要大啊?
请看下面简短的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
char a[] = "love you !";
char *a1 = (char *)malloc(11);
printf("strlen_a = %d\n",strlen(a));
printf("sizeof_a = %d\n",sizeof(a));
printf("strlen_a1 = %d\n",strlen(a1));
printf("sizeof_a1 = %d\n",sizeof(a1));
}
结果却是:
strlen_a = 10
sizeof_a = 11
strlen_a1 = 22
sizeof_a1 = 4
sizeof_a1 = 4 这个好理解,因为sizeof测试的是指针a1占的内存空间大小 在32位上是 4B
但是strlen为什么是22啊? 在程序当中不是已经指定其为11了吗?(这个11是strlen(a)的值)。
求高手指教!!!!!!