指標記憶體分配

2021-07-10 23:58:46 字數 915 閱讀 7547

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...