Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
812 views
in Technique[技术] by (71.8m points)

memory - Printing the physical address of a C pointer

I can print the address of a pointer by using the following code

#include<stdio.
int main(){
    int *q =(int*) malloc(4);
    printf("%x
",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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...