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