0x01 什麼是malloc?
malloc函數是C/C++語言裡面用來管理內存的函數。在中文裡面稱為動態內存分配(memory allocation)。它的格式是長這個樣子的:1
void* malloc(size_t size);.//size_t 是你想定義的size的種類,例如Int。而size則是你想設置使用多少Byte的內存。
這個函數要實現的功能就是分配一段可連續使用的內存在系統裡面,但必須具備以下的要求:
- malloc分配的內存大小必須至少為size參數所指定的字節數。
- malloc返回的數值是指針,指向一段內存的開始地址。
- 多次調用malloc所分配的地址不能有重疊的部分,除非某次malloc所分配的地址已經被釋放掉。
- malloc應該盡快完成內存分配並且返回。
- 實現malloc時應同時實現內存大小調整和內存釋放函數(realloc和free)
想看malloc命令可以在Terminal輸入這個指令1
man malloc
每個進程有2^N字節的內存,N是機器位數。比如以64位元的操作系統來說的話,每個進程的虛擬地址空間為2^64Byte。
這種虛擬地址空間的作用:簡化程序編寫+方便操作系統對進程的內存進行隔離管理。在Linux裡面