c:malloc free
c++: new delete
在c語言中malloc只會分配記憶體大小,不會呼叫類的建構函式,free不會呼叫類的析構函式
//main
//cint *p = (int *)malloc(sizeof(int));
*p = 10;
free(p);
int *a = (int *)malloc(sizeof(int)*10);
a[0] = 10;
free(a);
//c++
int *i = new int;
*i = 10;
delete i;
int *n = new int(10);
delete n;
int *array = new int[10];
array[0] = 10;
delete array;
注意:new和delete是運算子,不是函式,因此執行效率較高
new int;//開闢乙個存放整數的儲存空間,返回乙個指向該儲存空間的位址(指標)
new int(100);//開闢乙個存放整數的空間,並指定該整數的初始值為100,返回乙個指向該儲存空間的位址(指標)
new char[10];//開闢乙個存放字元陣列(10個元素大小)的空間,返回首元素的位址
new int2[3];//開闢乙個存放二維整型陣列(大小為2*3)的空間,返回首元素的位址
float *f = new float(3.1415);開闢乙個存放單精度數的空間,並指定初始值為3.1415,將返回的位址賦值給變數f
new運算子動態分配堆記憶體
指標變數 = new 型別(常量);
指標變數 = new 型別[表示式];
建立陣列物件時,不能為物件指定初始值
delete運算子釋放已分配的記憶體空間
delete 指標變數;
delete 指標陣列;
「指標變數」必須是乙個new返回的指標
class test
~tesy()
private:
int m_a;
}//main
test *t = (test *)malloc(sizeof(test));
free(t);
test *t1 = new test(10);
delete t1;
物件的動態建立和釋放
new 動態地分配記憶體 delet 釋放記憶體 用new建立的物件只能通過指標訪問,建立物件時執行建構函式,有時候會出現記憶體不足,會出現異常。不再需要由new建立的物件時,用delete運算子釋放。否則會造成記憶體洩漏的情況。在釋放記憶體空間之前,自動呼叫析構函式,完成有關善後清理的工作。也就是...
C 物件的動態建立和釋放
使用類名定義的物件 請檢視 c 類的宣告和物件的定義 都是靜態的,在程式執行過程中,物件所佔的空間是不能隨時釋放的。但有時人們希望在需要用到物件時才建立物件,在不需要用該物件時就撤銷它,釋放它所佔的記憶體空間以供別的資料使用。這樣可提高記憶體空間的利用率。在c 中,可以使用new運算子動態地分配記憶...
物件的建立和釋放
1 new和delete基本語法 1 new和delete基本語法 1 在軟體開發過程中,常常需要動態地分配和撤銷記憶體空間,例如對動態鍊錶中結點的插入與刪除。在c語言中是利用庫函式malloc和free來分配和撤銷記憶體空間的。c 提供了較簡便而功能較強的運算子new和delete來取代mallo...