C 中記憶體釋放,防止野指標出現

2021-10-01 05:31:06 字數 1217 閱讀 5440

new型別

// 一維陣列

int*data =

intnew

[len]

;// 釋放記憶體

delete

data;

data =

nullptr

;// 二維陣列

int*

*data =

intnew

[row]

;for

(int i=

0; i)// 釋放記憶體

for(

int i=

0; i)delete

data;

data =

nullptr

;

malloc型別

// 一維陣列

int*data =

(int

*) malloc[

sizeof

(int*)

* len]

;// 釋放記憶體

free

(data)

;data =

nullptr

;// 二維陣列

int*

*data =

(int**

) malloc[

sizeof

(int*)

* row]

;for

(int i=

0; i)// 釋放記憶體

for(

int i=

0; i)free

(data)

;data =

nullptr

;

vector型別

vector<

int> data;

// 釋放記憶體if(

!data.

empty()

)

注:加大括號目的是執行完,程式自動析構。如果是指標型別也需要乙個乙個釋放。

mat型別

mat img = mat::

zeros

(rows, cols, cv_32fc1)

;img.

release()

;

C語言記憶體(野指標 )

1.堆 在鍊錶中找接近4位元組的空間,發現 5位元組接近 4位元組,將 5位元組給程式。2.靜態儲存區 編譯時就存在 儲存全域性變數和靜態區域性變數 3.野指標 1 區域性指標變數沒有初始化 struct student char name int number int main struct st...

記憶體陷阱 馴服C 中的野指標

什麼是野指標?乙個母親有兩個小孩 兩個指標 乙個在廚房,乙個在臥室,屬於不同的 塊,其生存期不同 母親讓在廚房的小孩帶一塊蛋糕 指標指向的物件 給在臥室的小孩,這樣在臥室的孩子才肯寫作業。但這個在廚房的小孩比較淘氣,他在走出廚房時自己將蛋糕吃了,沒能帶出來。而在臥室的沒有吃到蛋糕,所以不肯完成他的作...

記憶體陷阱 馴服C 中的野指標

我們知道,c 將記憶體劃分為三個邏輯區域 堆 棧和靜態儲存區。既然如此,我稱位於它們之中的物件分別為堆物件,棧物件以及靜態物件。那麼這些不同的記憶體物件有什麼區別了?堆物件和棧物件各有什麼優劣了?如何禁止建立堆物件或棧物件了?這些便是今天的主題。一 基本概念 先來看看棧。棧,一般用於存放區域性變數或...