c 語言 malloch函式與free函式

2021-08-08 06:04:35 字數 744 閱讀 2423

void *malloc(size_t size) 

動態記憶體分配 

從堆(heap)中申請一塊長度略大於size長度的記憶體以作使用,如果不使用free()釋放,申請的記憶體會一直存在,我們稱之為「記憶體洩漏」

注意:在申請記憶體時,要根據你想要的記憶體大小進行分配,有點像廢話。看一下**第6行,malloc(sizeof(char *))

其實我原本是想分配乙個位元組給char a 的 ,結果一激動就給了它4個位元組(我ubuntu 是32位的)

返回型別:void* (無型別指標,別稱萬能指標,c++規定void* 可以強轉成任何型別的指標)

malloc(0) 返回null,或乙個可以被free()釋放獨特的指標,所以不是特殊情,不要用malloc(0)

free() 釋放申請的記憶體

#free 只是釋放申請的記憶體,並沒有修改a的值,最後將null 賦值給a,就是防止之後誤使用a 訪問已釋放的記憶體

#如果訪問了,如**11行,其實是有問題的(gcc 只是警告我%s 不過valgrind 提示有段錯誤)

C語言 變數與函式

形參 未出現函式呼叫時,函式中指定的形參並不佔記憶體中的儲存單元。只有在發生函式呼叫時,函式中的形參才被分配記憶體單元。在呼叫結束後,形參所佔的記憶體單元也被釋放。實參與形參 在 語言中,實參向對形參的資料傳遞是 值傳遞 單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在記憶體中,實參單元與形...

C語言 函式與遞迴

1 分類 1 庫函式 io庫函式,字串操作庫函式,字元操作庫函式,時間 日期庫函式,數學函式,其他庫函式。2 自定義函式 與庫函式相同,有函式名,返回值型別和函式引數,但都又自己設計。其組成如下 ret type fun name para1,ret type 返回型別 fun name 函式名 p...

C語言指標與函式

函式在記憶體中有位址,通過定義指向函式的指標變數,並建立相應的指向關係後,運用指標訪問函式。函式指標變數的定義與使用 若函式的返回值是位址,則稱此函式是指標型函式,即返回指標的函式。指標型函式定義的一般形式 資料型別 函式名 形參表 int p 與int p 的區別?int p是返回值為指標的函式 ...