記憶體與指標 動態申請記憶體

2021-10-10 01:48:18 字數 745 閱讀 9149

1、malloc

標頭檔案malloc.h

一維記憶體申請:型別識別符號 *變數

變數名=(型別識別符號*)malloc(sizeof(型別識別符號)*陣列大小);

二維記憶體申請:型別識別符號 **變數

變數名=(型別識別符號**)malloc(sizeof(型別識別符號*)*陣列行大小);

for(int i=0;i《陣列行大小;i++)

變數名[i]=(型別識別符號*)malloc(sizeof(型別識別符號)*陣列列大小);

釋放:free(變數名)

變數名=null;

2、new

型別識別符號 *變數名;

變數名=new型別識別符號[陣列大小]

釋放:delete 變數名;

變數名=null;

用指標強制修改常量的值本質上是修改常量所指向的記憶體的值,但是常量本身不會被修改

指標也可以指向結構體變數

在動態申請記憶體後釋放記憶體指標的時候可能由於指標指向的位置的變化導致程式崩潰。

3、避免野指標的形成

野指標形成原因

即沒有令指標=null

動態申請記憶體

如果函式的引數是乙個指標,不要指望用該指標去申請動態記憶體。示例1中,test函式的語句getmemory str,100 並沒有使str獲得期望的記憶體,str依舊是null,為什麼?void getmemory char p,int num void test void 示例1 試圖用指標引數申...

指向指標的指標申請動態記憶體

在 高質量c程式設計指南 中,提到了如果函式的引數是乙個指標,那麼別指望它能申請動態記憶體。如下 include include void getmemory char p,int num int main void getmemory char p,int num 最後的輸出的stu的結果是0,即...

指標動態申請記憶體的錯誤分析

指標動態申請記憶體的錯誤有幾種解釋,有如下幾種 相信我們都知道傳值呼叫引數時,不改變實際引數的值。原理 形參是實參的乙個copy 副本 而不是指向同一塊記憶體位址。於是用指標或引用就可以解決這個問題,大多數時候還會節省記憶體開銷,因為不用作副本拷貝。這樣乙個例子 void test char ps ...