作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [問題] getMem函數
時間Fri Apr 25 22:44:25 2008
※ 引述《fairyflame (妖精火燄)》之銘言:
: 在MemMgr和MemBlock都有出現......
: 但型態不一樣
: bool getMem(size_t t, T*& ret)
: T* getMem(size_t t)
: 不懂為什麼要在兩個class裡面用相同的函式
: 它們之間有什麼關係嗎?
: 另外, T*& ret 這樣的一個寫法 那個&指的是address還是reference呢?
: // 3. The return memory address is stored in "ret"
: 這句話的意思也不太懂......
: 有勞通透的大大們開示了...<(_ _)> 謝謝
OK... 這些 functions 的關係是---
T* T::new(size_t)
--> T* MemMgr::alloc(size_t)
--> T* MemMgr::getMem(size_t)
--> bool MemBlock::getMem(size_t, T*& ret)
最後 MemBlock::getMem() 要 return bool 主要是因為 MemBlock 可能會不夠 memory,
所以 return false 讓 caller (MemMgr) 來決定多生一塊 MemBlock.
T*& 就從右邊唸過來 --- a reference to a T*.
講義有講, 請回去複習一下.
3. 就是把要 return 的 pointer 用 reference return 回去.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.132.230