Newsgroup: it.arti.musica.strumenti.chitarra
Titolo: [OT] Scusate, ma questo ng nasconde tra i chitarristi anche provetti informatici!!!

L'ho postato su it.comp.lang.c, ma voglio vedere se qui qualcuno (come
già è successo in passato, con aragost ad esempio) è in grado di darmi
una risposta precisa.
Ecco la mia domanda:
*************************************************
Vi spiego meglio quello che voglio chiedere: se io "alloco" dinamicamente la
meoria
necessaria per un array POSSO ESSERE SICURO E CERTO CHE LA MEMORIA
ALLOCATA SARA' COMPOSTA DA CELLE CON INDIRIZZO DI MEORIA
SEQUENZIALE?
Scusate il maisucolo, è per mettere in evidenza quello che vorrei
esattamente
sapere.
vi faccio vedere un esempio di codice che ho scritto:
***********contenuto del file "arrayDinamici.cpp"*****************
// prendo la dimensione che l'utente desidera per il suo array
void setDimensione(int &dim)
{
     int dimensione;
     printf("Inserisci la dimensione dell\'array:\n");
     scanf("%d",&dimensione);
     dim = dimensione;
}
// allocazione dinamica di array di float
float *setArrayFloat(int dim)
{
     float *array = (float *)malloc(sizeof(float)*dim);
     float *appoggio = array;
     if(array == NULL){
          printf("\nNON E\' POSSIBILE ALLOCARE MEMORIA\n");
          return NULL;
     }
     printf("\nIntroduci gli elementi float dell\'array:\n");
     for(int i=0;i<dim;i++,array++)
          scanf("%f",array);
     return appoggio;
}
// stampa array di float
void stampaArray(float *array, int dim)
{
     printf("\nEcco l\'array che hai introdotto:\n");
     for(int i=0;i<dim;i++,array++)
          printf("%.2f ",*array);
}
**********************************************************
Queste due funzioni le utilizzo nel main nel seguente modo:
*************************************
...
int dimensione = 0;
    float *array;
    int *arrayInt;
    setDimensione(dimensione);
    array = setArrayFloat(dimensione);
    stampaArray(array,dimensione);
...
***************************************
Funziona tutto perfettamente, ma appunto mi chiedo:
posso sempre essere sicuro che la memoria allocata sarà sequenziale,
per cui scorrendo con array++, andro' a prendere proprio i miei dati?
Grazie a tutti per la cortese attenzione!
Merendina
p.s.
Tra un'accordo e l'altro rispondete plis!
= : | 

Merendina
Quando allochi dinamicamente un array la allocazione delle liste di
puntatori e' sempre sequenziale. Se ne vuoi proprio essere certo puoi
usare i comandi malloc() e free() che allocano e liberano porzioni
contigue di memoria. 
Questo e' quello che mi ricordo da Fondamenti II. :-)
---
Metius
Continua ad urlare, cosi' possiamo parlare da persone civili (MadeT)

"Metius" <metiusMEGLIO...@EQUESTOaltervista.org> ha scritto nel 
messaggio news:nqi9q25mm138bfvf4...@4ax.com...

Bella prova Metius!
Grazie, volevo esserne certo...Fondamenti II...che ricordi!
= : |
Merendina 

"Metius" <metiusMEGLIO...@EQUESTOaltervista.org> ha scritto nel 
messaggio news:nqi9q25mm138bfvf4...@4ax.com...


A proposito Metius! Su it.comp.lang.c il post è ancora solo e misero
che attende risposta, nonostante sia un ng trafficato con oltre 265 
iscritti.
Lo avevo detto io che i veri smanettoni stanno qua! (non sempre smanettano
solo il pc, ma nun fa g'nente!)
EVVIVAAAA!
= : | 

 contigue di memoria. 
Beh, č quello che ha fatto: per allocare un array dinamicamente č
l'unica :)

 contigue di memoria.
... e non solo, lo spazio allocato e' sicuramente contiguo, perche' se non 
ce n'e' a sufficienza per la quantità richiesta la malloc fallisce 
restituendo un puntatore a *NULL. Anche i vettori statici occupano spazi 
contigui in memoria; in definitiva lo spazio allocato nello stack e' sempre 
contiguo.
F. 

 solo il pc, ma nun fa g'nente!)
[...]
Effettivamente questo non e' *UN* NG ma *IL* NG...
°:) 

> contigue di memoria.
...come vi invidio!!



ti diro' di piu... gli array non esistono...
ed e' sbagliato dire che hai allocato un array...
hai allocato memoria contigua, che poi, grazie all'aritmetica dei
puntatori, usi come se fosse un array...
ciao!