exit() o return()

salve,
ho win98 ed il dev c++.
quando c'è la possibilità che si verifichi un errore prevedibile dal
programmatore (con le
malloc, fopen(), passaggio prametri al main), di solito il
programmatore C inserisce una printf("errore").
A volte essa è seguita da exit(1), altre da return(-1).
Ora io chiedo: cosa cambi nei due casi? E' indifferente? Quando è meglio