當變數是指標的時候就需要使用在堆中開闢空間
記憶體分配
呼叫建構函式
int
*p = new int;
*p = 2;
cout << *p
2
也可以開闢的時候初始化
int
*p = new int(2);
cout << *p
《預設初始化
string *str = new
string();//初始化為空的字串
string *str = new sting;//預設初始化為空
int *pi = new
int();//初始化為0
int *pi = new
int;//不初始化
給陣列開闢空間
int *p = new
int[10];//等於p[10]
p[0] = 5;//p就是陣列的首位址
cout
<< p[0] 《物件開闢空間
person *person =new person();
物件在堆中開闢了內容空間,不用的時候需要把申請的空間釋放掉
delete p//釋放變數
delete p//釋放陣列
delete person//釋放物件
呼叫析構函式
釋放記憶體
delete p;
p = 0;
//const物件只能賦給const指標
const
int *p = new
int(1024);
//刪除const指標
delet p;
過載C 的new和delete
過載c c 標準庫的記憶體管理函式 比如malloc,free,operator new,operator delete,operator new,operator delete 時,編譯器會忽視重定義,所以不用擔心鏈結時會產生重定義錯誤。operator new,operator delete,o...
C 中的new與delete總結
標準庫提供的global operator new,在全域性名字空間中定義 void operator new std size t size 丟擲異常的版本 void operator new std size t size,const std nothrow t nothrow value no...
new和delete解析 c 筆記
1.new delete 和operator new operator delete和malloc free的關係 new,delete運算子 當我們使用一條new表示式時,實際上執行了三步操作 第一步,new表示式呼叫乙個名為operator new 或者operator new 的標準庫函式,該...