ogre中記憶體分配函式原始碼中的幾個疑問,請求各路高手解答。感激不盡

時間 2022-10-04 19:30:03

1樓:匿名使用者

該函式是這樣的,因為要對記憶體按2的n次方對齊,在unsigned char* p = new unsigned char[size + alignment]; 這一句先申請了記憶體,但所得到的指標p可能不是記憶體對齊的,如按4位元組對齊的話,記憶體地址只能是0x00000000,0x00000004,0x00000008等,但如果分配到的p是0x00000001這個地址時怎麼辦,這時要通過加一個偏移值來使地址對齊,偏移值是這樣算的,size_t offset = alignment - (size_t(p) & (alignment-1));其中( (size_t(p) & (alignment-1))等價於把p的值對alignment求餘,這就是size_t offset = alignment - size_t(p) %(alignment);對0x00000001這個地址來說:offset = 4 - (0x00000001 % 4) = 3; 0x00000001 + 3 = 0x00000004,這樣記憶體地址就對齊了,至於result[-1] = (unsigned char)offset;這個的意思我也不太清楚,估計與具體的記憶體管理策略有關,用來標記result這個地址的前一個地址的內容,將來記憶體**或其他計算時有用。

2樓:匿名使用者

sdk版本只提供了介面供你使用,這時候ogre只是一個規則已經確定好了的開發工具,你只能使用他既定的規則和介面,學習ogre使用的話從sdk入手就行。原始碼版本允許你對介面的內容進行修改。

malloc函式分配的記憶體如何使用與函式用途

看來你一定是個初學者。當你需要成千上萬的資料時你能像int a 5 int p p a 一樣定義那麼多數嗎?int p p int malloc 100 sizeof int 實際上可以理解為宣告瞭一個p 100 的int型陣列,你怎麼用陣列就怎麼用p的個指標。那麼為什麼不直接int a 100 這...

虛擬機器如何分配記憶體和,虛擬機器如何分配記憶體和CPU

根據主機配置來分配cpu和記憶體,所分配的cpu和記憶體數目不要超過物理機cpu和記憶體數目,而且還要預留一部分資源給物理機,分配的資源超過物理機所能承受的數量的話會好卡 不可以4核分配不了8個核 記憶體可以適當大一些,16g你分個2g出來,不小氣麼? 瀟瀟雨歇 也許是你所分配的就是他能使用的極限,...

linux怎麼給mysql分配記憶體大小

修改mysql配置檔案,優化快取大小和連線數連線方式,優化sql語句 記得mysql好像是有工具可以檢視最佔用資源的sql語句,找到他,優化他。安裝好mysql後,配製檔案應該在 usr local mysql share mysql目錄中,配製檔案有幾個,有my huge.cnf my mediu...