8-bit and 16-bit integers will usually occupy one byte and two bytes
respectively. They're not going to use any more memory than that, on any
sane byte-addressed machine, which is nearly all of them these days.
Overflow (both signed and unsigned) can be usually detected by processor
flags, but this is up to the language to take care of.
In C, unsigned overflow is legal behaviour, and signed overflow is
undefined.
For anything different, you need to program it yourself. Or some C
compilers have options to detect and trap signed overflow.
Do you have a particular problem to solve, or are writing an article
about the subject, or just quoting one?