[C] allocazione a runtime di array statico?

di il
6 risposte

[C] allocazione a runtime di array statico?

Salve a tutti,
sono un neofita della programmazione C e mi è sorto questo dubbio.

Se io scrivo:
int v[10];
significa che in fase di compilazione viene riservato un certo spazio di memoria per contenere
10 interi.

ma se io scrivo:
int dim;
scanf("%d", &dim);
int v[dim];
in questo caso la memoria non viene allocata dinamicamente al tempo di esecuzione in base al valore di dim?

Se è cosi allora a cosa servono gli array dinamici?

6 Risposte

  • Re: [C] allocazione a runtime di array statico?

    La seconda forma implica che il compilatore sia compatibile con lo standard C99 ed è una caratteristica di cui non tutti i compilatori dispongono (e che sconsiglio di usare).

    Tra l'altro dove questi vengano allocati non è chiarissimo ... GCC ad esempio, alloca i VLA nello stack e questo è un problema nella maggior parte dei casi, per la limitata disponibilità di memoria.

    Lo standard iniziale prevedeva solo array statici (con una costante tra [ ] oppure dinamicamente allocati con le relative funzioni).
  • Re: [C] allocazione a runtime di array statico?

    Ok allora farò a meno di usare la seconda forma.
  • Re: [C] allocazione a runtime di array statico?

    Per completezza di informazioni, quella forma si chiama

    Variable-length array

    di cui puoi cercare info su internet.

    E non si può parlare di "allocazione a runtime di array statico" come hai indicato nel titolo (è un controsenso). E' sempre un array dinamico.
  • Re: [C] allocazione a runtime di array statico?

    A lezione ci hanno detto:
    int v[COSTANTE]; array statico

    int *v, e annessa malloc; array dinamico

    Poi nel titolo ho messo il punto interrogativo alla fine, ma avrei dovuto inserire
  • Re: [C] allocazione a runtime di array statico?

    xneo ha scritto:


    Ha lezione
    A lezione ...
    Poi nel titolo ho messo il punto interrogativo alla fine, ma avrei dovuto inserire
    Ok ...
  • Re: [C] allocazione a runtime di array statico?

    Scusate per l'orrore grammaticale , in realtà volevo cominciare la frase con
    "Ho messo quel titolo..." ma a quanto pare non ho premuto il tasto backspace fino in fondo.
Devi accedere o registrarti per scrivere nel forum
6 risposte