The reason for this is that C has free memory access. Strcpy / strcat does not have NO IDEA, how much memory is on the other end of the pointer you gave them. They just assume that you know what you are doing, and go for it.
, : , . , , . , , . , ? - !
, - , , , , , , -, .
, , malloc.
, - , , ( ), strncpy. , .