《課時11 new&delete》
本地變量
malloc動态地得到一塊記憶體
C++用新了兩個新的運算符來動态配置設定記憶體
new Stash
new 類的時候,會配置設定空間并且調用構造函數
new int;
new Stash;
new int[10];
運算符必然有傳回值。
delete
delete p;
delete[] p;
先調用析構函數,再釋放空間。

int* psome = new int[10];傳回塊的第一進制素的位址。
delete [] psome;會調用所有的對象的析構函數。
int *p=new int; // 到堆棧裡面尋找一塊合适的空間,然後P指向這個空間,然後會有一張表記錄存位址和位元組大小,比如 p 和 4BYTE,然後會依次記錄動态配置設定的東西。
内部資料表!
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