free記憶體大小的問題

2021-05-24 02:09:43 字數 358 閱讀 9869

我們知道malloc的呼叫形式如:type* p = (type *)malloc(n*sizeof(type))

free的呼叫形式如:free(p)

好了,問題來了,free函式,我們只給傳入乙個指標,沒有傳入記憶體塊的大小n,那麼編譯器怎麼知道要釋放多少位元組的記憶體,如果讓你來實

現怎麼實現?

當時,蒙了,鬱悶(丟人)。。。

之前自己都看過類似的**的。。。

無非就是當申請記憶體的時候,p指向的記憶體的起始位元組有幾個存放著這塊記憶體的一些資訊,包括大小,型別等。

free的源**:

struct mem_control_block

void free(void *ptr) 

enum的記憶體大小

enum在記憶體中占用多少儲存空間,為什麼在使用enum型別的時候不用寫上enum的名字呢,想struct一樣呼叫?在網上搜尋了一下,找到了想要的結論!enum定義類似與下面這樣 enum color 用起來可能像這樣 color color red switch color 先說為什麼red,不能...

估算lua記憶體大小

檢視lua占用記憶體大小 想要獲取lua元素的size,無法直接使用sizeof,需要使用collectgarbage local function getmem return collectgarbage count endcollectgarbage stop local before getm...

類記憶體大小分析

include using namespace std class test int main 這是因為空類也可以被例項化,但是例項化的物件必須要有記憶體位址,所以空類會被加入乙個位元組,用來得到例項化的記憶體位址。include using namespace std class test int...