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