|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
[C] Debuggando... i virtual address
Buonasera a tutti.
Voglio chiarirmi una volta per tutte un dubbio che ho sugli indirizzi virtuali che debuggando i programmi tra windows e linux mi è sorto. Spiego meglio; partendo dal codice seguente valido per un piccolo test, (si parla di s.o. 32 bit) Codice:
#include <stdio.h>
typedef unsigned int u32;
u32 e;
u32 f;
void main(void)
{
u32 a;
u32 b;
u32 c;
u32 buffer[16];
printf("\n");
printf("\taddress of a: 0x%X\n",&a);
printf("\taddress of b: 0x%X\n",&b);
printf("\taddress of c: 0x%X\n",&c);
printf("\n");
printf("\taddress of buffer: 0x%X\n",buffer);
}
0x22FF3C -> quindi sono 24 bits su Linux: 0xBFFFF3A0 - > e questi sono 32 bits (un completo VA?) Windows mi riporta solo l'offset? che poi è di 24 bit? Che mi dite? Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
piu' semplicemente l'indirizzo sotto windows ha il primo byte a zero per cui la printf non te lo stampa.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
ok, infatti!
quindi sono VA completi. il fatto che sono molto più bassi quindi... è solo la rilocazione differente tra windows e linux. ok? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:01.



















