I can print the address of a pointer by using the following code
#include<stdio.
int main(){
int *q =(int*) malloc(4);
printf("%x\n",q);
}
When i execute the following code a hexadecimal value is printed. Is it the virtual address or the physical address of variable q on heap? If it is virtual how should i print the other?
It's in terms of virtual address space. It's impossible to get a "physical" address in standard C (unless you're on a system which doesn't have virtual memory, of course, in which case it'll always be the physical address) - if it's currently in swap space, for instance, it may not even have one, other than a current location on disk, which wouldn't be very useful to you.
There is no way of the program knowing whether it is a virtual or physical address. The memory is handled by the operating system and MMU which hands out addresses to the program.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With