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?