OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2316|回复: 0

内存管理

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-5-25
在线时间
3 小时
发表于 2017-7-11 15:50:30 | 显示全部楼层 |阅读模式
//重新分配内存(外部调用)
//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);                                  //返回新内存首地址
    }  
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-12-18 16:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表