// Attenzione: in C si può anche sconfinare!! // Terzo esempio: sconfinamento ESAGERATO da un vettore: crash!! #include int main() { int v3[10], v4[10]; int i; puts("Contenuto iniziale dei due vettori"); puts("(ci limitiamo a int e unsigned)"); puts("v3[]"); for (i=0; i<10; i++) { printf("i = %d: int: %d ; unsigned: %u\n", i, v3[i], v3[i]); } puts("v4[]"); for (i=0; i<10; i++) { printf("i = %d: int: %d ; unsigned: %u\n", i, v4[i], v4[i]); } puts("\nE ora sconfiniamo DI MOLTO su v3[] SCRIVENDOCI degli 0'"); for (i=0; i<100; i++) { v3[i] = 0; printf("i = %d: int: %d ; unsigned: %u\n", i, v3[i], v3[i]); } puts("\nE vediamo cosa è successo a v4[]"); puts("v4[]"); for (i=0; i<10; i++) { printf("i = %d: int: %d ; unsigned: %u\n", i, v4[i], v4[i]); } return 0; /* Messaggio di errore _di_esecuzione_ *** stack smashing detected ***: terminated Aborted (core dumped) Significato (https://stackoverflow.com/questions/1345670/stack-smashing-detected): "Stack Smashing here is actually caused due to a protection mechanism used by gcc to detect buffer overflow errors." Morale: BISOGNA STARE ATTENTI!! */ }