從記憶體四區的角度來理解C 中的類

2021-08-14 16:15:48 字數 830 閱讀 6820

下屬專案

測試用例數量結論無

0試驗無1

先給出記憶體四區的概念:堆區、棧區、全域性區、**區。詳情可自行搜尋,此處不作贅述。

c++類中物件的成員變數和成員函式是分開儲存的。

普通成員變數:儲存於物件(棧區或堆區)中,與struct變數有相同的記憶體布局和位元組對齊方式(會補齊);

靜態成員變數:儲存於全域性區。

成員函式:儲存於**區。

而當很多的物件共用同一塊**時,是通過this指標來區分不同的物件1

無論語言怎麼變,它們在記憶體上的基礎都是一樣的。

#include

"iostream"

using namespace std;

class c1

;//12

class c2

//4void

setk

(int val)

//4protected:

private:};

//24 16 ?

struct s1

;//12

struct s2

;//16?

intmain()

試著執行以上程式,我們就能體會到成員變數、成員函式在記憶體中的分布了2

如果本文有幫助到你,不如請我一杯可樂吧

結論試驗

結論基於王保明先生的講課內容 ↩︎

測試程式**於王保明先生的講課內容 ↩︎

C語言的記憶體四區

在執行乙個c語言程式時,此程式將擁有唯一的 記憶體四區 棧區 堆區 全域性區 區.一 棧區 由編譯器自動分配釋放,存放函式的形參 區域性變數等。當函式執行完畢時自動釋放。includechar getmem void main printf tmp s n tmp 輸出tmp system paus...

c 記憶體中呼叫dll C C 中的記憶體四區

存放 cpu 執行的機器指令。通常 區是可共享的 即另外的執行程式可以呼叫它 使其可共享的目的是對於頻繁被執行的程式,只需要在記憶體中有乙份 即可。區通常是唯讀的,使其唯讀的原因是防止程式意外地修改了它的指令。另外,區還規劃了區域性變數的相關資訊。總結 你所寫的所有 都會放入到 區中,區的特點是共享...

程式的記憶體模型 記憶體四區

在程式編譯後,生成了exe可執行程式,未執行該程式前分為兩個區域 區和全域性區 區 存放函式體的二進位制 由作業系統進行管理 存放cpu執行的機器指令。區是共享的,共享的目的是對於頻繁被執行的程式,只需要在記憶體中有乙份 即可。區是唯讀的,使其唯讀的原因是防止程式意外地修改了它的指令 全域性區 存放...