Zack
Zack

Reputation: 385

Allocating memory for two concatenated strings

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

Answers (2)

ThiefMaster
ThiefMaster

Reputation: 318508

Let's look at what's necessary to store a string:

  • one byte per character (assuming non-wide chars)
  • one trailing NUL byte ('\0', or just 0)

That makes it strlen(first) + strlen(second) + 1:

char *s = malloc(len1 + len2 + 1);

Upvotes: 3

haccks
haccks

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

Related Questions