这是分配内存以存储两个连接字符串的正确方法吗?
size_t len1 = strlen(first);
size_t len2 = strlen(second);
char * s = malloc(len1 + len2 + 2);
还是应该使用malloc(len1 + len2 + 1)
?
答案 0 :(得分:3)
让我们看一下存储字符串的必要条件:
'\0'
,或只是0
)这使strlen(first) + strlen(second) + 1
:
char *s = malloc(len1 + len2 + 1);
答案 1 :(得分:2)
应该是
char * s = malloc(len1 + len2 + 1); // 1 more space for \0
为NUL
终结符分配一个空格(字节)。