windows下變數的記憶體布局

2021-10-08 15:32:15 字數 481 閱讀 8024

今天除錯顏色值得時候,發現了乙個超出我認知常理的事情。

請看如下**

union testunion

;uint32_t rgba;

};int main()

{int intdata = (1 << 24) | (2 << 16) | (3 << 8) | 4;

testunion* testunion = (testunion*)(&intdata);

std::cout << testunion->b << " " << testunion->g << " " << testunion->r << " " << testunion->a;

system("pause");

return 0;

最終輸出的結果是是4 3 2 1

經過考慮

強行解釋一波

棧從上往下分配記憶體,所以4在低位,1在高位,對應到聯合體裡面,b是低位,a是高位,所以b是4,a是1。

C 記憶體布局(下)

虛繼承解決了從不同途徑繼承的類具有共同基類的問題,使得共同基類只有乙份拷貝。解決了二義性的問題,也節省了記憶體。虛繼承的一般類圖如下所示 sizeof derived 40 位元組。經過分析,可以得到derived類在記憶體中的儲存結構示意圖為 各部分在記憶體中的存放順序為先父類 後子類 最後公共基...

windows下共享記憶體

建立共享記憶體 define buf size res 1025 invalid handle value,物理檔案控制代碼 null,預設安全級別 page readwrite,可讀可寫 0,高位檔案大小 buf size res,地位檔案大小 sznameresult 共享記憶體名稱 char ...

windows下共享記憶體的使用

windows下程序通訊有很多方式,跨裝置通訊一般使用 tcp udp,如果在同一臺電腦上 使用 管道 和 共享記憶體還是比較方便的。下面說下windows下共享記憶體的使用。程序一 1 建立共享記憶體區域 include include using namespace std define buf...