C之記憶體分配

2021-08-17 05:07:12 字數 578 閱讀 9636

常見記憶體分配的錯誤:

記憶體分配方式:

1.靜態儲存區域:內存在程式編譯的時候就分配好,這塊內存在程式的整個執行期間都存在,如全域性變數、static變數

2.棧:在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時,這些儲存單元會被自動釋放。效率高,但分配的記憶體容量比較有限。

3.堆:也稱為動態記憶體,

由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os**。

malloc:

在堆上申請記憶體,最常用,釋放記憶體用free

void* malloc(size_t size);

calloc:

與malloc分配記憶體相同,只是將分配的記憶體初始化為0

void* calloc(size_t num, size_t size);

realloc:

將原本申請的記憶體區域擴容,引數size大小即為擴容後的大小,因此,此函式需要size大小必須大於ptr記憶體大小

C 之記憶體分配

很多人都覺得學習 c 是特別困難的事情。c 學習是比較複雜的 它的記憶體分配 指標 以及物件導向思想的實現等等,確實需要一定的技術積累。我們將以專題的形式,為大家逐一剖析 c 的技術重點和難點。本專題討論的就是記憶體分配。學習 c 如果不了解記憶體分配是一件非常可悲的事情。而且,可以這樣講,乙個 c...

C 並不難 之記憶體分配

c 並不難 之記憶體分配 很多人都覺得學習c 是特別困難的事情。c 學習是比較複雜的 它的記憶體分配 指標 以及物件導向思想的實現等等,確實需要一定的技術積累。我們將以專題的形式,為大家逐一剖析c 的技術重點和難點。本專題討論的就是記憶體分配。學習c 如果不了解記憶體分配是一件非常可悲的事情。而且,...

C 學習筆記之記憶體分配

靜態記憶體 staitc memory 儲存區域性static物件 類static資料成員 定義在任何函式之外的變數 棧記憶體 stack 儲存定義在函式內的非static物件 自由空間 free store 或稱堆記憶體 heap 儲存動態分配 即程式執行時分配 的物件 1.分配在靜態記憶體和棧記...