Newsgroup: it.comp.programmare.win32
Titolo: memoria virtuale

Sono un neofita, per gestire la memoria virtuale in visual c è sufficente
l'uso della malloc oppure si deve utilizzare qualche funzine di allocazione
della memoria tipica del visual c?
Grazie a chiunque mi risponda!!

 della memoria tipica del visual c?
malloc() chiama HeapAlloc(), che a sua volta alloca la memoria nello heap
principale del processo. Per allocare memoria virtuale devi invece usare
VirtualAlloc() e le sue amiche.
--
Bye! Lorenzo Lutti

 VirtualAlloc() e le sue amiche.
Davvero è così? Io credevo che fosse il sistema a decidere, in funzione
della disponibilità di risorse, dove e come
allocare la memoria richiesta.
Non ho provato, ma credo che chiamando una malloc per il doppio della
memoria fisica disponibile il sistema riesca ad
allocarla ricorrendo automaticamente al file di swap. Anzi se il sistema ha
bisogno di memoria e "vede" un'applicazione
non utilizzata da tempo credo che la sposti tutta o in parte in memoria
virtuale per liberare memoria fisica.
Sono tutte fesserie??
Stefano

 allocare la memoria richiesta.
Ma lui ha chiesto come allocare memoria VIRTUALE.
malloc() e compagnia allocano, per quanto possibile, memoria fisica.
Se il sistema vede scarsita' di memoria fisica, ricorre a qualla virtuale,
ma se vuoi esplicitamente allocare memoria virtuale devi chiamare delle
funzioni specifiche.
Ciaotutti,
*


Innanzi tutto grazie per le risposte.
Quello che succede a me č che usando malloc() il sistema alloca memoria
fisica fino al suo esaurimento ed a quel punto il programma si blocca,
ricevo un messaggio di operazione non valida (proprio nell'istante in cui la
memoria fisica a disposizione va a zero) ma il s.o. neanche ci prova ad
usare la memoria virtuale!
Pensavo anche io che l'uso della mem. virt. fosse trasparente ma mi č venuto
il dubbio che non sia cosě!
Ciao.

 virtuale per liberare memoria fisica.
Anche se ogni tanto ci si riferisce al file di paginazione dicendo che e`
"la memoria virtuale", questo non e` corretto; in realta` "memoria virtuale"
indica semplicemente la capacita` del memory manager di mappare in modo
uniforme e astratto ("virtuale", appunto) dei blocchi di memoria che nella
realta` possono essere memorizzati in RAM, nell'hard disk o anche altrove.
Quando tu in un normale programma Win32 accedi alla locazione 0x12345678,
non sai se in realta` essa e` contenuta in RAM, in un settore dell'hard disk
o in un registro di una periferica mappato in memoria; e` proprio questo il
bello. :)
--
Bye! Lorenzo Lutti

 ha scritto nel messaggio
news:9qukki$eid$2...@nreadb.inwind.it...


 writes:
B> Io sinceramente userei la new e la delete.
B> x me la malloc è un po' obsoleta.
Non è obsoleta. Sono due cose diverse che lavorano con meccanismi
diversi ed è meglio non mischiare!!!!!!
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: 
sa...@eng.it
 ( vedere X-nospam nello header - see X-nospam in header )

 funzine di allocazione della memoria tipica del visual c?
Per allocare memoria virtuale: VirtualAlloc e VirtualAllocEx
Per allocare memoria nello heap: HeapAlloc
Perfetti corrispondenti di malloc/free: LocalAlloc e LocalFree
C++ ha poi (te l'hanno già detto) l'operatore new che è una mano santa