指標引數的傳遞和記憶體分配

2021-07-26 02:19:11 字數 574 閱讀 7675

getmemory1的p是區域性變數,不能分配記憶體,會造成記憶體的洩露

getmemory2採用指向指標的指標進行分配記憶體

getmemory3 採用返回值的方式實現記憶體的分配,但分配記憶體必須用new或malloc進行分配

getmemory4會進行報錯,把陣列分配在棧上,為區域性變數,不能實現記憶體的分配

getmemory5分配的內存在靜態儲存區,每次呼叫都會是hello world。

指標引數傳遞記憶體

函式的引數是乙個指標,不要用該指標去申請動態記憶體 void get memory char p,int num void main void 可以得到str依舊是null。編譯器總是為每個函式的引數提供乙個臨時副本,指標引數p的副本看做是 p,編譯器使得 p p,如果函式體內的程式修改了 p指向的...

關於指標引數的記憶體傳遞副本

乙個錯誤的例子 void getmemory char p,int num void test void 書上關於這個的解釋是 編譯器編譯時給指標引數提供臨時副本 p,使得 p p。如果函式體內的程式修改了 p指向的內容,就導致引數p指向的內容也被做了相應的修改,因為他們指向同一記憶體空間。在本例中...

c 指標引數是如何傳遞記憶體的

引數策略 如果函式的引數是乙個指標,不要指望用該指標去動態申請記憶體。如下 void getmemory char p,int num void test void 原因是編譯器總是為每個引數製作臨時副本。指標引數p,其副本為 p,使 p p。如果改變了 p所指的內容,相應的p所指的內容也跟著改變 ...