C 記憶體管理與const

2021-05-14 08:23:07 字數 717 閱讀 7294

類的成員函式後面加 const,表明這個函式不會對這個類物件的資料成員(準確地說是非靜態資料成員)作任何改變。

在設計類的時候,乙個原則就是對於不改變資料成員的成員函式都要在後面加 const,而對於改變資料成員的成員函式不能加 const。所以 const 關鍵字對成員函式的行為作了更加明確的限定:有 const 修飾的成員函式(指 const 放在函式引數表的後面,而不是在函式前面或者參數列內),只能讀取資料成員,不能改變資料成員;沒有 const 修飾的成員函式,對資料成員則是可讀可寫的

c++中棧區 堆區 常量區 ***

#include

void main()

對應的彙編**

10: a = c[1];

00401067 8a 4d f1 mov cl,byte ptr [ebp-0fh]

0040106a 88 4d fc mov byte ptr [ebp-4],cl

11: a = p[1];

0040106d 8b 55 ec mov edx,dword ptr [ebp-14h]

00401070 8a 42 01 mov al,byte ptr [edx+1]

00401073 88 45 fc mov byte ptr [ebp-4],al

第一種在讀取時直接就把字串中的元素讀到暫存器cl中,而第二種則要先把指標值讀到edx中,在根據

edx讀取字元,顯然慢了。

C 堆 棧與記憶體管理

一 所謂stack和heap 例子 class complex 作用域 scope stack 儲存區域性變數或臨時物件的一塊記憶體,函式呼叫結束會消失 heap 存放全域性物件或變數的記憶體空間,函式呼叫結束如果不通過delete 釋放將直到程式執行結束之前一直存在。二 static local ...

C 記憶體的知識 常量與指標 const

1 stack 棧 編譯器自動分配 釋放 存放區域性變數,函式引數,返回資料,返回位址等內容 2 heap 堆 一般由程式設計師分配 釋放 為動態記憶體分配提供位址空間 3 全域性區 靜態區 全域性區和靜態區存放在同乙個區,程式結束釋放 4 常量區 常量不可修改 堆向高位址方向生長 棧向低位址方向生...

C 頂層const與底層const

1.頂層const 指代指標是乙個常量 2.底層const 指代指標指向的物件是乙個常量。int i 0 int const p1 i 不能改變p1的值,這是乙個頂層const,符合第一點 const int ci 42 不能改變ci的值,這是乙個頂層const,符合第二點 const int p2...