Reputation: 660
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?
Upvotes: 4
Views: 6357
Reputation: 25936
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.
Upvotes: 12
Reputation: 55
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.
Upvotes: 3