天天看點

c++ 浙大翁恺老師 面向對象程式設計聽課筆記收錄(十一)New & Delete

《課時11 new&delete》

本地變量

malloc動态地得到一塊記憶體

C++用新了兩個新的運算符來動态配置設定記憶體

new Stash

new 類的時候,會配置設定空間并且調用構造函數

new int;

new Stash;

new int[10];

運算符必然有傳回值。

delete

delete p;

delete[] p;

先調用析構函數,再釋放空間。

c++ 浙大翁恺老師 面向對象程式設計聽課筆記收錄(十一)New & Delete

int* psome = new int[10];傳回塊的第一進制素的位址。

delete [] psome;會調用所有的對象的析構函數。

int *p=new int; // 到堆棧裡面尋找一塊合适的空間,然後P指向這個空間,然後會有一張表記錄存位址和位元組大小,比如 p 和 4BYTE,然後會依次記錄動态配置設定的東西。

内部資料表!

c++ 浙大翁恺老師 面向對象程式設計聽課筆記收錄(十一)New & Delete

int *a=new int[10];

Student *q=new Student();

Student *r=new Student[10];

delete p;// 會先在記錄表中查找p,取得位址知道有多大,然後去删除空間。

如果 a++; delete[] a;那麼系統在表裡面找不到這個搜位址

delete q; //先析構,然後回收空間

delete r; // 因為沒有方括号,那麼空間照樣收回,但析構函數隻會調用一個啊。

this是指向對象的指針

TIPS for new and delete

。不要用delete去釋放new沒有配置設定的空間

。不要釋放兩次同一空間

。釋放NULL指針指向的空間是安全的,它不做任何事情,留着這個口子是為了讓你的代碼好些

。方括号要成對出現

記憶體洩漏是不能存在的

筆記來源:

https://study.163.com/note/noteIndex.htm?id=271005&type=0#/noteIndex?resType=0&resId=393015&sortType=0

繼續閱讀