Newsgroup: it.comp.lang.pascal
Titolo: Problema 64k

Come risolvere il problema dei 64k del compilatore Turbo Pascal?

Come risolvere il problema dei 64k del compilatore Turbo Pascal?
Dunque, precisiamo : il problema dei 64k non e' propriamente dovuto al TP quanto
all'architettura delle macchine intel 80x86.
In realta', oggigiorno, e' un problema legato solo ai vecchi processori, ma la
cui architettura e' comunque supportata dagli ultimi modelli.
Il problema e' dovuto al fatto che un segmento di memoria non puo' superare la
dimensione di 65536 byte.
Le soluzioni sono molteplici, sfruttano per lo piu' i puntatori, e variano a
seconda di cio' che devi fare.
E comunque, un singolo oggetto, anche sfruttando i puntatori (a meno che non si
implementi una lista) non puo' superare i 64k.
Andrea, mica uno qualunque...
--------------------------------------------------
"Ho cambiato signature, si vede ?"
--
Posted from 
itaca.ulysse.it
 [195.223.254.1]
via Mailgate.ORG Server - 
http://www.mailgate.org

implementi una lista) non puo' superare i 64k.
Ho sempre usato array con puntatori e vari blocchi di memoria heap
senza problemi, ma le liste mi giungono nuove. Puoi farmi un esempio?
Grazie.
Bye.
Jo Parrello - OWL/C++ Programmer
http://www.geocities.com/SiliconValley/Hills/8145
(
jopar...@geocities.com
)

senza problemi, ma le liste mi giungono nuove. Puoi farmi un esempio?
type ptr_nodo = ^nodo;
     nodo = record
              dato : byte ;
              nodo_successivo : ptr_nodo;
            end;
In questo caso non c'e' limite alla dimensione della lista, che non sia la
memoria totale disponibile.
Skyscraper (apprezzatelo adesso : eviterete la coda)
----------------------------------------------------
 
andrea_...@bigfoot.com
----------------------------------------------------


memoria totale disponibile.
Per memoria totale intendi la memoria convenzionale (i primi 640 kb)?
Quello che non capisco e' come far capire al DOS che voglio allocare
un bel po' di memoria (diciamo 200kb).
Devo crearmi dei blocchi heap ognuno di 65520 byte l'uno, oppure vi e'
la possibilita' di creare un unico blocco lineare (anche se va a
cozzare con il limite di segmentazione della memoria)?
Inoltre la lista mi appare un po' ingarbugliata, poiche' la gestione
dell'elemento successivo e' a carico del programmatore, non e'
automatica come potrebbe essere un puntatore in un array (anche se in
quest'ultimo va comunque gestito l'indirizzo). Penso che cancellare un
elemento nel bel mezzo della lista richieda parecchio lavoro, e tempo
soprattutto. Forse la gestione protetta della memoria e un DOS
extender semplifichino il lavoro. Che ne dici?


extender semplifichino il lavoro. Che ne dici?
Sicuramente !
Difatti, secondo me, non ha piu' senso oggi programmare per i 640 Kb !...


memoria totale disponibile.
Per memoria totale intendi la memoria convenzionale (i primi 640 kb)?
Quello che non capisco e' come far capire al DOS che voglio allocare
un bel po' di memoria (diciamo 200kb).
Devo crearmi dei blocchi heap ognuno di 65520 byte l'uno, oppure vi e'
la possibilita' di creare un unico blocco lineare (anche se va a
cozzare con il limite di segmentazione della memoria)?
Inoltre la lista mi appare un po' ingarbugliata, poiche' la gestione
dell'elemento successivo e' a carico del programmatore, non e'
automatica come potrebbe essere un puntatore in un array (anche se in
quest'ultimo va comunque gestito l'indirizzo). Penso che cancellare un
elemento nel bel mezzo della lista richieda parecchio lavoro, e tempo
soprattutto. Forse la gestione protetta della memoria e un DOS
extender semplifichino il lavoro. Che ne dici?
Bye.


funzioni.
[CUT]
Scusate, ho postato per errore il precedente messaggio un'altra volta.
Bye.
Jo.