Please note, the function call strlen will return the number of character before null terminator(\0), in order to allocate enough space to hold the value of char array, you have to initialize the char pointer variable as shown above, otherwise you will have memory problem.
p_son = new char[ strlen( boy ) + 1 ];