c 初始化char C C 記憶體模型

2021-10-13 18:35:41 字數 1035 閱讀 4060

不知道你有沒有想過什麼是程式?程式 = 資料結構 + 演算法

再往內部粗略的理解,計算機硬體只能識別0和1這兩種數字量,非0即1,非黑即白

當然今天不**這些,主要聊一聊程式中的資料在記憶體中存放的位置及形式,相信這會對進一步理解程式有一定的幫助!

參考文章:

1. 主要分割槽

主要分為四個區域:堆、棧、全域性資料區以及**區【堆疊代全】

①堆(heap):由程式設計師自行負責申請和釋放,如果申請空間但是沒有釋放,程式結束時由作業系統進行**。

②棧(stack):由系統自動分配釋放,存放區域性變數、函式引數等。

③全域性資料區:全域性變數、靜態變數、一般常量、字串常量

全域性資料:全域性變數、靜態變數放在一塊,區分初始化與未初始化【可讀可寫】

未初始化:bss段

已初始化:data段

常量資料:一般常量、字串常量【唯讀】

靜態區域性變數只能被乙個函式訪問,而全域性則可以被所有函式訪問

2>靜態資料成員的初始化

靜態數成員只能在類外進行初始化,並且不能用引數初始化表初始化。即類內宣告類外初始化。

④程式**區:存放函式的二進位制**【唯讀】

2. 一些特點

3. 實際例子

int a = 0;    //a在全域性已初始化資料區 char *p1;     //p1在bss區(未初始化全域性變數) main()
4. 一點思考

資料作為程式中至關重要的一部分,對資料操作如何影響程式的執行效率呢?

初始化c++物件應該在堆上初始化還是應該在棧上初始化呢?有什麼區別麼?

如何看待 頻繁的new/delete勢必會造成記憶體空間的不連續,從而造成大量的碎片,使程式效率降低。

linux 32位環境使用者空間分配情況

記憶體初始化

電容的分類 dram 基本原件是電容,需要定時重新整理,儲存速度較慢 dram又分為 sram 同步動態隨機儲存器 synchronous dynamic random access memory ddr 雙倍速率同步動態隨機儲存器 double data rate sdram ddr2 在 ddr...

記憶體初始化過程

1,物理記憶體資訊的獲取 0x15中斷,功能號 e820h,e801h,e88h 見檔案 linux arch i386 boot setup.s 執行完上面的 後,記憶體資訊被分為多條資訊放在e820map位置處,每個資訊條目長20位元組,包含乙個記憶體區間的資訊,條目數放在e820nr處。即實際...

記憶體初始化檔案 ISE Quartus

1.quartus mif file demo multiple line comment multiple line comment single line comment depth 32 the size of data in bits width 8 the size of memory i...