C C 記憶體分配以及釋放

2021-10-08 15:44:40 字數 1160 閱讀 7365

int

*ptr =

(int*)

malloc

(size countsize)

;//隨機

int*ptr =

(int*)

calloc

(int number,size itemsize)

;//預設為0

用 ptr ==

nullptr 或者用 ptr ==

0來判斷是否分配成功

// 重新分配已有的記憶體

realloc

(* _block,size t_size)

;ptr =

(int*)

realloc

(ptr,size t_size)

;//若第二次分配的記憶體小於之前的記憶體,已經賦予的值,重新分配後不會改變,重新分配後,位址不變

//若擴充套件記憶體,位址會改變,已經賦予的值不會改變

free

(ptr)

//釋放記憶體。

c++記憶體分配,底層由malloc實現

資料型別 *指標 =

new 資料型別

int*p =

newint

;*p =

500;p[0

]=500;

資料型別 *指標 =

new 資料型別[

]int

*pr =

newint[5

];pr[1]=

500;

pr[2]=

500;

記憶體釋放

delete p;

delete

p;

動態記憶體風險

1丶野指標(懸掛指標)

2丶記憶體碎片

補充

//複製記憶體 可能會超範圍複製

void

*memcpy

(void

*dst,

const

void

*src,size t_size)

;//記憶體填充 可能會超範圍填充

memset

(void

*src,

char val,size t_size)

;

記憶體分配和釋放

自從學習了c語言,老師就教導我們說 對於動態記憶體的申請和釋放,一定要遵守 誰申請,誰釋放 的原則。在此原則的指導下,不僅是我 不僅是你,就連特級大師都設計了這樣怪怪的函式 函式說明 getwindowtext hwnd,lptstr,int 取得視窗標題。需要在引數中給出儲存標題所使用的記憶體指標...

記憶體分配和釋放

三 記憶體分配和釋放 自從學習了c語言,老師就教導我們說 對於動態記憶體的申請和釋放,一定要遵守 誰申請,誰釋放 的原則。在此原則的指導下,不僅是我 不僅是你,就連特級大師都設計了這樣怪怪的函式 函式說明 getwindowtext hwnd,lptstr,int 取得視窗標題。需要在引數中給出儲存...

C C 記憶體分配

1 c c 記憶體分配 1 棧區 由編譯器自動分配和釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 一般由程式設計師分配和釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事。3 全域性 靜態 資料區 全域性變數和靜態變數的儲存是放在一塊...