第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

關(guān)于在ogre中內(nèi)存分配函數(shù)源碼中的幾個(gè)疑問,請(qǐng)求各路高手解答。

關(guān)于在ogre中內(nèi)存分配函數(shù)源碼中的幾個(gè)疑問,請(qǐng)求各路高手解答。

C PHP
慕尼黑的夜晚無繁華 2023-01-06 22:18:32
void* AlignedMemory::allocate(size_t size, size_t alignment) { assert(0 < alignment && alignment <= 128 && Bitwise::isPO2(alignment)); unsigned char* p = new unsigned char[size + alignment]; size_t offset = alignment - (size_t(p) & (alignment-1)); //這是什么意思? unsigned char* result = p + offset; result[-1] = (unsigned char)offset; //這是什么意思?return result; }
查看完整描述

2 回答

?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

SDK版本只提供了接口供你使用,這時(shí)候OGRE只是一個(gè)規(guī)則已經(jīng)確定好了的開發(fā)工具,你只能使用他既定的規(guī)則和接口,學(xué)習(xí)ogre使用的話從SDK入手就行。源碼版本允許你對(duì)接口的內(nèi)容進(jìn)行修改。

查看完整回答
反對(duì) 回復(fù) 2023-01-10
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

該函數(shù)是這樣的,因?yàn)橐獙?duì)內(nèi)存按2的n次方對(duì)齊,在unsigned char* p = new unsigned char[size + alignment]; 這一句先申請(qǐng)了內(nèi)存,但所得到的指針p可能不是內(nèi)存對(duì)齊的,如按4字節(jié)對(duì)齊的話,內(nèi)存地址只能是0x00000000,0x00000004,0x00000008等,但如果分配到的p是0x00000001這個(gè)地址時(shí)怎么辦,這時(shí)要通過加一個(gè)偏移值來使地址對(duì)齊,偏移值是這樣算的,size_t offset = alignment - (size_t(p) & (alignment-1));其中( (size_t(p) & (alignment-1))等價(jià)于把p的值對(duì)alignment求余,這就是size_t offset = alignment - size_t(p) %(alignment);對(duì)0x00000001這個(gè)地址來說:offset = 4 - (0x00000001 % 4) = 3; 0x00000001 + 3 = 0x00000004,這樣內(nèi)存地址就對(duì)齊了,至于result[-1] = (unsigned char)offset;這個(gè)的意思我也不太清楚,估計(jì)與具體的內(nèi)存管理策略有關(guān),用來標(biāo)記result這個(gè)地址的前一個(gè)地址的內(nèi)容,將來內(nèi)存回收或其他計(jì)算時(shí)有用。

查看完整回答
反對(duì) 回復(fù) 2023-01-10
  • 2 回答
  • 0 關(guān)注
  • 182 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)