的物理地址,我可以通過使用下面的代碼打印C指針
#include<stdio.
int main(){
int *q =(int*) malloc(4);
printf("%x\n",q);
}
在i執行以下代碼印刷有十六進制值打印指針的地址。它是堆上的變量q的虛擬地址還是物理地址?如果它是虛擬的,我應該如何打印另一個?
的物理地址,我可以通過使用下面的代碼打印C指針
#include<stdio.
int main(){
int *q =(int*) malloc(4);
printf("%x\n",q);
}
在i執行以下代碼印刷有十六進制值打印指針的地址。它是堆上的變量q的虛擬地址還是物理地址?如果它是虛擬的,我應該如何打印另一個?
這是根據虛擬地址空間。在標準C中不可能獲得「物理」地址(除非你在沒有虛擬內存的系統上,當然,在這種情況下,它總是物理地址) - 如果它當前處於交換空間例如,它甚至可能沒有一個磁盤上的當前位置,這對你來說不是很有用。
它總是虛擬地址,物理地址對你來說是隱藏的。 – ouah
@ouah有沒有辦法打印物理地址? –
@SanjeevSharma btw使用'%p'而不是'%x'和類型轉換爲'void *'的地址作爲'printf(「%p \ n」,(void *)q);' –