PDA

View Full Version : [C] problema con allocazione memoria


Shotokhan
09-01-2008, 17:56
premetto che sono un po' arruginito!
ho questa struct:

typedef struct pagMem{
char* pag;
int id:5;
int data;
}pmem;

in un file .c cerco di allocare la memoria per un vettore di struct ma mi da un errore
pmem* block = (pmem*)malloc(512)
ma mi dice:
initializer element is not constant
ki mi sa' aiutare? soprattutto non riesco a dichiarere neanche una singola struct! se scrivo:

pmem block;

se provo ad accedere a qualche elemento al suo interno, aclipse non mi apre niente cioe' non trova niente!

ilsensine
09-01-2008, 20:01
Certo che non puoi in quel modo...cosa c'è che non ti piace in questo?
pmem block[quanti elementi vuoi];

AnonimoVeneziano
10-01-2008, 10:45
pmem* block = (pmem*) malloc(sizeof(pmem)*512);


Ciao

ilsensine
10-01-2008, 10:58
pmem* block = (pmem*) malloc(...);

Ha messo block come variabile globale, quindi niente chiamate a funzioni per inizializzarla.
Serve un constructor, o una allocazione fissa.

AnonimoVeneziano
10-01-2008, 11:05
Ha messo block come variabile globale, quindi niente chiamate a funzioni per inizializzarla.
Serve un constructor, o una allocazione fissa.

Beh, io pensavo che l'allocazione la facesse all'interno del blocco main() , dubito che stesse cercando di farla nello spazio globale ... o no? :mbe:

Shotokhan
10-01-2008, 16:29
mi sn reso conto che facevo una scemenza atroce solo ke io dopo una settimana che non tocco un pc per programamre mi dimentico tutto, figuratevi dopo le vacanze di natale! cercavo di allocare memoria fuori da un main :doh:
dovrei aver trovato la soluzione x rendere ogni pagina di memoria di 512 kb:

typedef struct pagMem{
char pag[507];
int id:5;
int data;
}pmem;

ora avrei un'altra domanda xo'... :rolleyes: la dichiarazione nell'header della stringa pag alloca la memoria oppure, la memoria sara' allocata quando dichiarero' in un file .c un tipo PMEM?

ilsensine
10-01-2008, 16:31
typedef struct pagMem{
char pag[507];
int id:5;
int data;
}pmem;

Che cosa stai cercando di fare con questo coso? E che relazione dovrebbe avere con "512kb"?

Shotokhan
10-01-2008, 16:46
in pratica devo creare un programma x memorizzare i salvataggi dei giochi, ovviamente e' una cosa molto semplice (x ki programma bene) xke' e' un progetto x l'uni ma ci sn molte cose che non ricordo, ad esempio: una dichiarazione in un file header come quella di cui vi ho chiesto prima occupa direttamente memoria?
cmq x farla breve devo realizzare questo prog ma ogni pagina di memoria deve essere grande MASSIMO 512b (si prima ho sbagliato a mettere kb) x un totale di pagine della grandezza di 64 kb! :rolleyes:

se proprio vuoi leggere il progettino puoi farlo qui: http://margot.di.unipi.it/mediawiki/upload/7/70/Progetto_LLS07-1-base.pdf