“Heisenbugs”
BUGS
assert() is implemented as a macro; if the expression tested has side-effects, program
behaviour will be different depending on whether NDEBUG is defined. This may create
Heisenbugs which go away when debugging is turned on.