原文代码:
heap_ptr = (rt_uint8_t *)begin_align;
RT_DEBUG_LOG(RT_DEBUG_MEM, ("mem init, heap begin address 0x%x, size %d\n",
(rt_ubase_t)heap_ptr, mem_size_aligned));
/* initialize the start of the heap */
mem = (struct heap_mem *)heap_ptr;
mem->magic = HEAP_MAGIC;
mem->next = mem_size_aligned + SIZEOF_STRUCT_MEM;
mem->prev = 0;
mem->used = 0;
这里面的这一句:
mem->next = mem_size_aligned + SIZEOF_STRUCT_MEM;
目的是想把mem的next 指向尾部节点 ,但是mem_size_aligned + SIZEOF_STRUCT_MEM 只是offset ,缺少了基地址 。
是否要改成:
mem->next = heap_ptr + mem_size_aligned + SIZEOF_STRUCT_MEM;
heap_ptr 是内存分配的其实地址。
我的理解是否正确?