Reputation: 385
Is this a right way to allocate memory in order to store two concatenated strings?
size_t len1 = strlen(first);
size_t len2 = strlen(second);
char * s = malloc(len1 + len2 + 2);
or should I use malloc(len1 + len2 + 1)
?
Upvotes: 0
Views: 98
Reputation: 318508
Let's look at what's necessary to store a string:
'\0'
, or just 0
)That makes it strlen(first) + strlen(second) + 1
:
char *s = malloc(len1 + len2 + 1);
Upvotes: 3
Reputation: 106012
It should be
char * s = malloc(len1 + len2 + 1); // 1 more space for \0
allocating one more space (byte) for NUL
terminator.
Upvotes: 2