Newsgroup: it.comp.lang.c++
Titolo: problema di allocazione

Salve.
Vorrei riservare uno spazio di memoria (ad una locazione fissata) , in modo
tale che nessuna dichiarazione di variabile o malloc possa utilizzarla ,
diciamo che posso utilizzarla solo indirizzandola direttamente..
come posso fare?
bye

luigi wrote:

In modo standard non ti e' dato sapere a priori dove potrai (o dove non
potrai) allocare della memoria, perche' l'unico a conoscerlo e' il sistema
operativo (e per lui il gestore della memoria). Allo stesso modo non puoi
impedire al gestore di allocare una data porzione di memoria libera.
Anche spulciando tra le pagine del man, non ho trovato nessun meccanismo per
indicare dove allocare la memoria (sinceramente non mi aspettavo nemmeno di
trovarlo).
Al di la della tua richiesta, sei sicuro che sia cosi' importante riservare
una porzione di memoria a te nota a priori per evitare che ci si possa
scrivere sopra? A cosa ti serve?
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 wrote in message
news:HhBVa.212831$Ny5.6...@twister2.libero.it...


 ha scritto nel messaggio
news:oRAVa.1209811$mA4.1...@news.easynews.com...

Beh, se fai una malloc (ma non la free), lo spazio di memoria che ti viene
riservato non verra' utilizzato per successive dichiarazioni di variabili o
malloc. Questo ti viene gratis.
Resta il fatto di "posso utilizzarla solo indirizzandola direttamente".
Che differenza c'e', per te (cioe', per la tua applicazione), tra
indirizzarla direttamente e indirizzarla tramite una variabile (quella a cui
hai "assegnato" la malloc)?
Ciao,
Ema

 
Ho qualche dubbio che il C++ o il C possano aiutarti in questo senso. 
Sicuramente puoi accedere alla memoria Sram conoscendo il suo range di 
indirizzi, tuttavia non puoi riservare la memoria in questo modo. Da 
quanto ho capito stai lavorando senza un sistema operativo embedded, 
quidni credo che ti serva un file di architettura della memoria settando 
gli indirizzi riservati allo Stack e all'heap. Successivamente il 
compilatore riservera' quello spazio alla memoria programma sulla quale 
metterai le tue costanti. Forse nella documentazione del Processore 
embedded che stai usando c'e' scritto qualcosa. 
Scusa la curiosita' di quale processore si tratta?
Ciao
Emanuele

 ha scritto nel messaggio
news:bg7scn$kuhu8$1...@ID-190851.news.uni-berlin.de...


 qualcosa (ad esempio un piccolo sovraccarico)  puo' cambiare indirizzo.
Il fatto e' che per me e' difficile capire il perche' ti serve allocare una
porzione specifica, che sia sempre la stessa ad ogni boot.
Come tutti sappiamo la memoria e' volatile.
Ad ogni boot non e' che se vai a leggere da un'area di memoria ci trovi
quello che c'era all'accensione precedente.
Prima ce lo devi andare a scrivere.
E siccome sei tu che ci scrivi e ci leggi, un'area di memoria vale l'altra.
Forse ho una visione ristretta del problema.
Se ne hai voglia, spiegami l'arcano.
Ciao,
Ema

 
wrote:


 ha scritto nel messaggio
news:bg7vi7$lo5f0$1...@ID-190851.news.uni-berlin.de...


 precedentemente allocata... altrimenti tutto va a puttane..
mmm... non credo dipenda dal linguaggio in se.
Sicuramente dipende dalla piattaforma e dal compilatore.
(per curiosità, quali sono?)
Comunque credo che tu debba impostare il linker in modo da
NON fargli utilizzare la parte di ram che ti interessa, dopodichè
nel programma ti crei dei puntatori a cui dai il valore che ti serve
e scrivi partendo da li.
Non sono sicuro che funzioni, però puoi provare...
Comunque sei sicuro di dover riscrivere tutti i 512 k ogni volta?
ciao!
-- 
Gerolamo
** Articolo inviato tramite i servizi gratuiti di 
www.x-privat.org
 **

 Come ti spiegavo sul primo news , la memoria è sempre alimentata da una


 spero di essere stato chiaro...
magari dico una cacchiata ma utilizzare il ramdisk non puo' aiutare
in un caso di questo genere?
-- 
mattia
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:oprs4aj1...@news.interbusiness.it...


 ha scritto nel messaggio
news:3f27...@x-privat.org...


 ha scritto nel messaggio
news:904a3e3cf485fd9b3ff...@mygate.mailgate.org...


 flash.
pardon, pensavo di stare ancora leggendo i.c.o.linux.develompent :P
e quindi mi riferivo al ramdisk del kernel linux
leggo sull'altro thread che sei senza OS pero'...
puoi sempre dare un'occhiata ai sorgenti e vedere cosa fa, se
ho capito bene (picchiatemi) riserva dello spazio nella ram ad uso 
e consumo dello userspace.


 ha scritto nel messaggio
news:7f9ad4b00f19fe6c9ab...@mygate.mailgate.org...


 sto utilizzando
??
www.kernel.org
?
comunque dai un'occhiata a questo prima e vedi se fa per te:
http://pficheux.free.fr/eyrolles/linux_embarque/docs_externes/ramdisk.txt.html
NB: posso _gentilmente_ chiederti di quotare decentemente?


Scusate se insisto, ma anche se non hai un sistema operativo, devi avere un 
gestore della memoria perche' la malloc e' una chamata di sistema, quindi 
devi informarti su come viene gestita la memoria sulla tuo target. 
Probabilmente la Altera ti fornisce un "runtime" da linkare al tuo 
programma e li' c'e' la gestione dell'heap, o, meglio ancora ti danno i 
sorgenti della malloc come succede per alcuni compilatori per 
microcontrollori. Il linguaggio C da solo non ti basta per risolvere il tuo 
problema.
Il discorso ramdisk non mi pare una soluzione perche' tutte le volte che 
spegni e riaccendi in linux il ramdisk viene ricreato e non credo che puoi 
avere la certezza che sia ricreato nella stessa zona di memoria del boot 
precedente.


 ha scritto nel messaggio
news:oprs4eql...@news.interbusiness.it...


 news:oprs4aj1...@news.interbusiness.it...
RAGAZZI BASTA !!! se volete andare avanti cosi mandatevi delle mail ...
state postando testo inutile facendo scelarare la gente con il vostro modo
di quotare barbaro ... leggete qua' prima ...
http://www.freewebz.com/iosononiubbo/iosononiubbo.htm#quotare
poi per luigi se sei su un sistema embedded con compilatore proprietario o
particolare, avra' cmq delle primitive o delle opzioni a cui puoi dire di
compilarlo per avere un'area statica puntata da un tuo nome di var sempre ad
un indirizzo fisso di memoria, quindi ti basta avere la mappa hw degli
indirizzi di memoria ed il gioco e' fatto.
ti consiglio di leggerti prima tutto il manuale del compilatore e poi di
leggere tutto il manuale della tua macchina hw dove vai ad implementare.
ciao

 di quotare barbaro ... leggete qua' prima ...
Hai ragione, scusate tutti.

 ha scritto nel messaggio
news:oprs50t1...@news.interbusiness.it...

scusami anche tu se mi sono alterato ... ma dopo aver letto e visto 5 post
in cascata in cui si e' andato in escalescion di quote mi e' venuto il porco
e mi sono scaricato con un post un po alterato.
ciao