Gambas-it

Programmazione => Altri linguaggi => Topic aperto da: vuott - 30 Novembre 2019, 16:31:29

Titolo: [C] Leggere nell'area di memoria delle variabili automatiche
Inserito da: vuott - 30 Novembre 2019, 16:31:29
Appresso un esempio pratico per la lettura dei byte nell'area di memoria delle variabili automatiche:

Codice: [Seleziona]
#include <stdio.h>


int c;

int main() {

int i = 0x03020100, n = 0x07060504;
int *p = &i;


for (c=0; c<16; c++) {
printf("%d -  %.2X\n", c, *(((unsigned char *) &i) + c) );
if ((((c+1)%4)==0) && (c<8))
printf("\n");
sleep(1);
}

printf("%p\n", &i);

/* Leggiamo la prima variabile: i */
printf("%x\n", *(int *) *(unsigned long int *) (((unsigned char *) p) + 8) );

/* Leggiamo la seconda variabile: n */
printf("%x\n", *(int *) (*(unsigned long int *) (((unsigned char *) p) + 8) + 4) );

      return (0);

}


/* LEGENDA:
 
   *(((unsigned char *) &i) + c) :: converte l'indirizzo di memoria in un puntatore a carattere
                                    ed aggiunge il valore di "c" all'indirizzo di memoria di "&i".
                                    Quindi lo dereferenzia.
*/