新手上路
- 积分
- 23
- 金钱
- 23
- 注册时间
- 2017-5-25
- 在线时间
- 3 小时
|
//重新分配内存(外部调用)
//memx:所属内存块
//*ptr:旧内存首地址
//size:要分配的内存大小(字节)
//返回值:新分配到的内存首地址.
void *myrealloc(u8 memx,void *ptr,u32 size)
{
u32 offset;
offset=my_mem_malloc(memx,size);
if(offset==0XFFFFFFFF)return NULL;
else
{
mymemcpy((void*)((u32)mallco_dev.membase[memx]+offset),ptr,size); //拷贝旧内存内容到新内存
---------------------------这个地方好像有bug, 因为原来size很可能比新分配的小, 所以才要用到重新分配, copy的时候不能用新的size来设置要copy的大小,会产生越界
myfree(memx,ptr); //释放旧内存
return (void*)((u32)mallco_dev.membase[memx]+offset); //返回新内存首地址
}
}
|
|