Ragazzi, volevo vedere come funzionava l'allocazione dinamica ed ho provato a fare questo semplice script:
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;
}
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?