1、一維指標記憶體分配。
//作陣列使用時
int *p = null; //儲存int型別資料
int n = 7; //陣列長度
p = (int *)malloc(sizeof(int)*n);
int i;
for(i=0; i0;
free(p); //釋放
2、指標陣列記憶體分配
int n = 6;
int *p[n]; //儲存int指標型別資料的陣列
//p[i]為指標,可以讓該指標指向其它空間,同樣可以為其動態分配,與二維陣列類似
int i;
for(i=0; iint *)malloc(sizeof(int)*(i+1));
//釋放,分配誰,釋放誰
for(i=0; ifree(p[i]);
3、二維指標。
int **p = null;
//與2類似,可以做二維陣列,也可以做指向指標的一維陣列
int n = 4;
p = (int **)malloc(sizeof(int *)*n); //指標陣列只需分配這個即可
int i;
for(i=0; i//這樣分配,陣列記憶體可能不連續
p[i] = (int *)malloc(sizeof(int)*(i+1));
//m*n陣列,這樣分配空間連續
p[0] = (int *)malloc(sizeof(int)*m*n);
for(i=1; i1] + m;
//釋放時,注意釋放順序,先釋放內層
for(i=0; i//這樣分配,陣列記憶體可能不連續
free(p[i]);
free(p);
指標以及記憶體分配
指標很靈活,這使得指標很難管理,在定義指標時,將在棧中開闢一塊記憶體存放指標的位址 棧內的記憶體由系統分配和釋放 指標的位址記憶體只是存放指標的位址,不存放指標指向的資料,值得注意的是,定義指標時指標會隨機指向一塊記憶體,如int p p會指向一塊不為空的記憶體,相當危險,例如執行判斷if p 這裡...
指標以及記憶體的分配
1.指標很靈活,這使得指標很難管理,在定義指標時,將在棧中開闢一塊記憶體存放指標的位址 棧內的記憶體由系統分配和釋放 指標的位址記憶體只是存放指標的位址,不存放指標指向的資料,值得注意的是,定義指標時指標會隨機指向一塊記憶體,如int p p會指向一塊不為空的記憶體,相當危險,例如執行判斷if p ...
指標 動態記憶體分配
c 中的動態記憶體分配機制 c 中使用new和delete來完成在堆上對動態記憶體的分配和釋放。注.所有指標都應該被初始化 如果指標指向的動態記憶體被釋放或沒有指向合法的位址,就應該將指標設定為nullptr,否則記憶體洩漏 變數 double pvalue pvalue new double pv...