Ragazzi, volevo vedere come funzionava l'allocazione dinamica ed ho provato a fare questo semplice script:
La compilazione va a meraviglia, ma quando avvio il programma ad un certo punto si blocca a causa di un "errore di segmentazione", da cosa e' dovuto?codice:#include <stdio.h> #include <stdlib.h> #include <malloc.h> int main() { int i, yn, elem, dimint, dimarr, *array;; printf("Inserire il numero di elementi interi (intero):\n"); scanf("%i", elem); dimint = sizeof(int); dimarr = elem * dimint; array = (int *)malloc(dimarr); if(array == NULL) { printf("Memoria insufficente per allocare %i elementi", elem); system("PAUSE"); } printf("Vuoi inserire il loro valore uno alla volta (digita 1)\nOppure lasciare assegnare il valore al programma? (digita 2)\n"); scanf("%i", yn); if(yn == 1) { for(i = 0; i < elem; i++) { printf("Valore array[%i] (intero): ", i); scanf("%i", array[i]); printf("\n"); } } else { for(i = 0; i < elem; i++) { array[i] = i; } } for(i = 0; i < elem; i++) { printf("array[%i] = %i\n", i, array[i]); } printf("Allocati per l'array personalizzato: %i byte\n", dimarr); system("PAUSE"); return 0; }

Rispondi quotando
