|
|
|
![]() |
|
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: 21:15.