I don't understand why sometimes I need to use `fflush()` and sometimes not.

My program is segfaulting at the moment and I am debugging it with print statements. When a program segfaults, does `stdout` not flush its buffer automatically?