(Only semi-serious, so I did toy with posting this in the 'Other' forum. Please move if appropriate).
When working with arrays, C strings, etc, does anyone else catch themselves making things maybe one or two bytes longer, just in case ? ;)
Part of me thinks I should have more confidence in my arithmetic; another part thinks this is 'defensive programming' and I can afford a few extra bytes here and there :p
I do tend to use snprintf() rather than sprintf(), etc, and calculate max offsets using sizeof(), but years of debugging other people's out-by-one and buffer overrun errors has clearly had a traumatic effect !
In the 'slightly bigger than an AVR but not quite a real computer' space, ESP32 and ESP8266 (Xtensa cores, gcc) implement stack smashing guards and helpful stack traces, but I imagine at the cost of some runtime overhead.