伪代码,作记录用:
写的都只是思路上的代码,未运行过;
// @author Jave.Lin
// @date 2016-04-16 16:41
function getPOT(n:Number):Number
{
var v:Number = 1;
while (n < v) v 0)
{
lastB.mergeNextBlock();
mergeCount--;
}
_blocks.split(i + 1, subLen);
return lastB;
}
}
}
else
{
_lastCanUseContinueIdx = -1;
_lastCanUseContinueSize = -1;
}
}
raiseCap();
return getBlock(size, _lastCanUseContinueIdx);
}
private function allocBs(pot_size:int):void
{
if (_size < pot_size)
{
var ps:int = _size;
_size = pot_size;
var b:Bloack = new Bloack();
if (_byte == NULL)
{
_byte = alloc(_size * sizeof(Number));
b.off_s = 0;
b.len = _size;
b.free = true;
b.nextBlock = null;
_blocks.push(b);
}
else
{
_byte = realloc(_byte, _size * sizeof(Number));
b = new Block();
b.off_s = ps;
b.len = _size - ps;
b.free = true;
b.nextBloack = null;
_blocks[_blocks.length - 1].nextBlock = b;
}
}
}
private function raiseCap():void
{
allocBs(getPOT(_size + 1);
}
}