0
這是分配內存以存儲兩個級聯字符串的正確方法嗎?爲兩個級聯字符串分配內存
size_t len1 = strlen(first);
size_t len2 = strlen(second);
char * s = malloc(len1 + len2 + 2);
還是應該用malloc(len1 + len2 + 1)
?
這是分配內存以存儲兩個級聯字符串的正確方法嗎?爲兩個級聯字符串分配內存
size_t len1 = strlen(first);
size_t len2 = strlen(second);
char * s = malloc(len1 + len2 + 2);
還是應該用malloc(len1 + len2 + 1)
?
讓我們看看有哪些需要存儲的字符串:
每個字符'\0'
,或者只是0
)這使得它strlen(first) + strlen(second) + 1
:
char *s = malloc(len1 + len2 + 1);
應該
char * s = malloc(len1 + len2 + 1); // 1 more space for \0
爲NUL
終止分配一個更大的空間(字節)。
你只需要使用'len1 + len2 + 1';如果你使用'2',你將'浪費'一個完整的字節(但是內存管理器可能會分配多達15個額外的字節,所以你可能不會注意到)。 –