#include#include分析問題:#include
int malloc(char *p)
intmain()
在int malloc(char *p)中的*p實際上市主函式p的乙個副本,編譯器總是要為函式的每個引數製作臨時副本。在本例中p申請了心的記憶體,知識把p所指的記憶體的位址改變了,但是p1絲毫未變。因為函式malloc沒有返回值,因此p1並不指向p所申請的那段記憶體。事實上,每執行一次malloc就會申請一塊記憶體,但申請的記憶體卻不能有效釋放,結果是記憶體一直被獨佔,最終造成記憶體洩露。
如果一定要用指標引數去申請記憶體,那麼應該採用指向指標的指標,傳p1的位址給函式malloc.
**如下:
#include#include還可以用函式返回值來傳遞動態記憶體,這種方法更加簡單:(用到指標函式)#include
int malloc(char **p)
intmain()
#include#include再看下面這個有意思的問題:#include
char *malloc(char *p)
intmain()
#include#include這段**輸出的是什麼呢?#include
char *malloc()
intmain()
答案是:亂碼,因為malloc此時返回的是指向「棧記憶體」的指標,該指標的位址不是null,但是其原來的內容已經被清除,新內容不可知。(這個為什麼呢?)
傳遞動態記憶體
當你涉及到c c 的核心程式設計的時候,你會無止境地與記憶體管理打交道.這些往往會使人受盡折磨.所以如果你想深入c c 程式設計,你必須靜下心來,好好苦一番.現在我們將討論c c 裡我認為哪一本書都沒有完全說清楚,也是涉及概念細節最多,語言中最難的技術之一的動態記憶體的傳遞.並且在軟體開發中很多專業...
傳遞動態記憶體
當你涉及到c c 的核心程式設計的時候,你會無止境地與記憶體管理打交道。這些往往會使人受盡折磨,所以如果你想深入c c 程式設計,你必須靜下心來好好苦一番。現在我們將討論c c 裡我認為哪一本書都沒有完全說清楚,也是涉及概念細節最多,語言中最難的技術之一的動態記憶體的傳遞。並且在軟體開發中很多專業人...
傳遞動態記憶體
當你涉及到c c 的核心程式設計的時候,你會無止境地與記憶體管理打交道.這些往往會使人受盡折磨.所以如果你想深入c c 程式設計,你必須靜下心來,好好苦一番.現在我們將討論c c 裡我認為哪一本書都沒有完全說清楚,也是涉及概念細節最多,語言中最難的技術之一的動態記憶體的傳遞.並且在軟體開發中很多專業...