C語言記憶體

2021-08-08 05:24:48 字數 1338 閱讀 8536

1.

ram和rom都是半導體儲存器,乙個叫隨機儲存器掉電丟失,乙個叫唯讀儲存器掉電儲存。

2.ram又分為靜態和動態,靜態的速度非常快,動態的慢但是便宜,ddr ram是電腦中常用儲存器,動態記憶體中的動態是因為乙個dram單元儲存的是0還是1取決於電容是否有電荷,所以時間一長容易電荷變化,所以需要加乙個額外電路進行記憶體重新整理操作。

3.電腦程式等於**、資料、過程。**是函式,資料就是變數,中間函式體多個函式相繼執行,對資料進行加工就是過程,程式最後得到的是乙個結果。

4.馮諾依曼結構是**和資料放在一起,哈弗結構是**和資料分開存放。 

5.記憶體就是用來儲存可變資料的,在一些linux系統上,應用程式的資料和**都放在dram中,在微控制器中程式**放在flash中,程式中涉及到的資料必須放在ram(sram)中。 

6.很多程式設計的關鍵都是為了記憶體。資料結構和演算法是研究如何組織資料和用更優秀的方法來加工資料。

7.從作業系統角度:作業系統來管理記憶體,把記憶體分成了一頁一頁,每頁有4kb大小,頁內則以位元組為單位進行管理,作業系統給我們提供了記憶體管理的一些介面api,我們只需要api就可以管理記憶體。在沒有作業系統時就是需要編寫程式直接操作記憶體,容易錯誤。

8.從語言角度:彙編中沒有api介面,c語言中編譯器幫我們管理直接的記憶體位址,有api介面,c++語言對記憶體進一步封裝,使用者可以用new和delete來建立記憶體和刪除記憶體。

9.硬體上記憶體是記憶體條,邏輯上記憶體是用來存放變數的可以隨機訪問讀寫的無限多個記憶體單元格。每個單元格都有乙個固定的位址叫做記憶體位址,這個記憶體位址和這個記憶體單元唯一對應且永久繫結。32位的作業系統含有32位資料線和32位位址線,記憶體限制為4g。

10.計算機中cpu只認識記憶體位址不關心空間,位址和空間是記憶體單元的兩個方面。

11.在32位的cpu中int整型體現在他和cpu本身的位寬是一樣的。陣列相當於在記憶體這個大樓中抽出一段。

12.資料型別決定了後面數字或符號所表徵的記憶體的長度和解析方法,函式是一段**的封裝,所以函式的實質就是一段**的首位址。

13.int a和int* b都代表乙個記憶體位址,但是記憶體的長度和解析方法不同

14.最簡單的資料結構是陣列,把首元素的首位址和變數名p繫結起來,結構體是另外一種資料結構,包中的元素型別不一樣。

15.c語言是面向過程的,但是也可以實現物件導向的**。void (*pfunc)(void)中包含了函式指標的結構體就類別c++中物件導向的class。

16.棧是一種資料結構,c語言中用棧來儲存區域性變數,先進後出是棧,先進先出是佇列。

17.堆是一種記憶體管理方式,堆記憶體是作業系統劃歸給堆管理器的一部分,使用者通過api來使用堆記憶體。

18.複雜的資料結構有鍊錶、雜湊表、二叉樹和圖等。用來解決一些特定的複雜問題。

C語言記憶體

返回viod 型別的指標,同時為未初始化的記憶體空間。需要顯式的進行型別轉換,以及分配失敗處理,初始化 int p null 型別轉換 p int malloc sizeof int 分配失敗處理 if p null else 初始化處理 memset p,0,sizeof int 初始化處理 me...

C語言記憶體

全域性變數 外部變數 出現在 塊 之外的變數就是全域性變數。區域性變數 自動變數 一般情況下,塊 內部定義的變數就是自動變數,也可使用auto顯示定義。靜態變數 是指記憶體位置在程式執行期間一直不改變的變數,用關鍵字static修飾。塊內部的靜態變數只能被這個 塊內部訪問,塊外部的靜態變數只能被定義...

C語言記憶體

1.一直對c語言記憶體的分布,不太清楚,模模糊糊,查了一些資料,簡單敘述下,以後工作中再結合工作看看 一 iar記憶體的分布,通過看生成的map檔案,分三個段 1 位址從低到高,先是 段 有對應的位址 主要是text ro code 跟ro data const唯讀資料 一般 段的資料都是儲存在記憶...