簡體   English   中英

物理memory地址和指針地址不一樣

[英]Physical memory address and pointer address is not same

嗨,我正在使用 c++ 指針,還使用來自微軟的名為RamMap的程序來檢查 memory 物理地址。

但我發現 c++ 中的變量指針地址在 RamMap列表中不存在

例如:

#include <cstdlib>
#include <iostream>
#include<conio.h>
using namespace std;

int main()
{
    string var1="var1";
    string * foo = &var1;
    cout<<foo;

    getch();
    return 0;
}

它返回0x61fde0 在此處輸入圖像描述

之后我查看了 RamMap 並搜索了這個地址但找不到任何東西

在此處輸入圖像描述

誰能幫我? 我很困惑,我注意到每次重新運行程序時我的指針地址都不會改變

每個進程都有自己的 memory 視圖,它由邏輯地址組成。 它們可能對應也可能不對應物理地址,即實際 RAM。 但即使它們確實對應,值仍然不同。

如果不是這種情況,很多事情都會 go 出錯。 但最明顯的一個可能是物理 memory 碎片問題。 想象一下,如果一個進程請求分配一個 4MB 的 memory 塊,並且有大量可用 RAM,但沒有連續的 4MB 塊。 哎喲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM