字符串
C语言中的字符串在内存中是以字符数组的形式存在,且以 ‘\0’ 结尾。
因此,对于字符串
char p[] = "123456";
int lenSize = sizeof(p);
int lenStrlen = strlen(p);
printf("lenSize = %d\n", lenSize); //==7,字符串 "123456" 占用的内存,包括结束符 ‘\0’
printf("lenStrlen = %d \n", lenStrlen); //==6,字符串 "123456" 的长度,不包括结束符 ‘\0’
因此使用malloc()分配内存时,应该分配的长度是 (lenStrlen + 1)。其中 1 是指 ‘\0’。