關於Malloc函數的點點滴滴

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裡面

未完待續

0%