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所指的內容也跟著改變 ...