How do I read characters into an array from the serial monitor?

Is it always best practice to reserve memory even if the number of bytes used is unknown? If so what is the recommended amount of memory I should reserve for this use case?