They use C's memory allocation routines behind the scenes. There is a bug in the implementation of free, which will eventually use all your memory and crash. Even if the bug were fixed, there would still be a risk of problems caused by heap fragmentation. C arrays of char are a much better idea.

You are not passing five arguments, you are passing one argument and using the overloaded + operator of the String class to construct that argument. Stop putting that operator in the argument, either construct your new string first, or pass multiple strings as multiple arguments.