哪个高手进来帮我注释一段代码;

youzhipeng 2009-06-21 11:20:55

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;
}
//---------------------------------------------------------------------
void* AlignedMemory::allocate(size_t size)
{
return allocate(size, OGRE_SIMD_ALIGNMENT);
}
//---------------------------------------------------------------------
void AlignedMemory::deallocate(void* p)
{
if (p)
{
unsigned char* mem = (unsigned char*)p;
mem = mem - mem[-1];
delete [] mem;
}
}
...全文
42 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
youzhipeng 2009-06-21
  • 打赏
  • 举报
回复
/** Allocate memory with given alignment.
@param
size The size of memory need to allocate.
@param
alignment The alignment of result pointer, must be power of two
and in range [1, 128].
@returns
The allocated memory pointer.
@par
On failure, exception will be throw.
*/

static void* allocate(size_t size, size_t alignment);

/** Allocate memory with default platform dependent alignment.
@remarks
The default alignment depend on target machine, this function
guarantee aligned memory according with SIMD processing and
cache boundary friendly.
@param
size The size of memory need to allocate.
@returns
The allocated memory pointer.
@par
On failure, exception will be throw.
*/
static void* allocate(size_t size);

/** Deallocate memory that allocated by this class.
@param
p Pointer to the memory allocated by this class or <b>NULL</b> pointer.
@par
On <b>NULL</b> pointer, nothing happen.
*/
static void deallocate(void* p);

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧