Yes, always. On an MCU, reserve the maximum amount of memory you expect to encounter (consistent with the amount of dynamic memory available), and always take care not to exceed array bounds.
Writing outside of bounds will lead to unexpected behavior or program crashes.
Finally, remember that array indexing starts at zero, so this reserves 30 bytes, sets them all to zero and writes to byte 31, violating the array boundary:
char line[30]={0};
line[30]='A'; //array boundary violation