Ho provato questo:
#include <stdlib.h>
void stringa() {
char str[100];
free(str);
}
int main ( int argc, char * argv[] ) {
stringa();
return 0;
}
Sotto linux, gcc 3.2.3. Compila senza nessun warning, in esecuzione da "segmentation fault". Probabilmente nemmeno al momento del ritorno, ma durante la free stessa! Senz'altro un brutto errore di programmazione, totalmente ignorato dal compilatore...