Parlando di memorie, qual è la differenza tra segmento e offset?
Cosa sono i puntatori far e huge?
Se ho una variabile di tipo long,posso dichiarare un puntatore in questo modo:
int *punt;
o sono obbligato a dichiararlo così:
long *punt;
Parlando di memorie, qual è la differenza tra segmento e offset?
Cosa sono i puntatori far e huge?
Se ho una variabile di tipo long,posso dichiarare un puntatore in questo modo:
int *punt;
o sono obbligato a dichiararlo così:
long *punt;
Il concetto di puntatore far/huge con segmento/offset puoi anche sotterrarlo. Si usava ai tempi del DOS, ora questi problemi non esistono piu'.
long *punt;
Se scrivi
int *punt;
il compilatore lo considera un puntatore a int.
ChReAn
-------------------
Slackware 9.1 powered
ma se poi vado a puntare una variabile long mi da errore?Originariamente inviato da ChReAn
long *punt;
Se scrivi
int *punt;
il compilatore lo considera un puntatore a int.
Ehm... Mi sa che non ci siamo capiti.Originariamente inviato da matrics21
ma se poi vado a puntare una variabile long mi da errore?
Se devi puntare a un long, dichiara il puntatore long.
Se punti a un int, dichiara un puntatore int.
Il compilatore non ti dà errore ma solo un warning: stai però molto attento al matching dei tipi di dati fra puntatore e dato puntato se vuoi evitarti spiacevoli inconvenienti.
Ad esempio questo codice:
Compila con un solo warning con gcc, e se eseguito sembra funzionare, ma eviterei come la peste errori simili.codice:int i; long *punt; i = 3; punt = &i; printf ("%d\n", *punt);
ChReAn
-------------------
Slackware 9.1 powered
Ok,grazie
Per quanto riguarda la memoria invece?
Ciao,
Il segmento è un' area di memoria riservata ad un processo; mentre un offset è una differenza... tra cosa?
offset =posiz_attuale - indirizzo_iniziale
es
se il segmento di memoria inizia in 0010h
e tu sei in 0015h all' ora l' offset è
0010h-0015h=0005h
Ciao
Powered by MacOSX Lion
Grazie