OpenEdv-开源电子网

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

内存分配问题

[复制链接]

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2013-8-11
在线时间
5 小时
发表于 2017-4-14 16:53:30 | 显示全部楼层 |阅读模式

u8 my_mem_free(u8 memx,u32 offset)  
{  
    int i;  
    if(!mallco_dev.memrdy[memx])//Î′3õê¼»ˉ,ÏèÖ′DD3õê¼»ˉ
        {
                mallco_dev.init(memx);   
        return 1;//Î′3õê¼»ˉ  
    }  
    if(offset<memsize[memx])//&#198;&#171;ò&#198;&#212;ú&#196;ú′&#230;3&#216;&#196;ú.
    {  
        int index=offset/memblksize[memx];                        //&#198;&#171;ò&#198;&#203;ù&#212;ú&#196;ú′&#230;&#191;éo&#197;&#194;&#235;  
        int nmemb=mallco_dev.memmap[memx][index];        //&#196;ú′&#230;&#191;éêyá&#191;
        for(i=0;i<nmemb;i++)                                                  //&#196;ú′&#230;&#191;é&#199;&#229;á&#227;
        {  
            mallco_dev.memmap[memx][index+i]=0;  
        }  
        return 0;  
    }else return 2;//&#198;&#171;ò&#198;3&#172;&#199;&#248;á&#203;.  
}

请问原子哥,这个函数释放内存,实际只是把内存管理表对应的标识位清零了,内存池对应空间不要操作吗?


活到老,学到老。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12052
金钱
12052
注册时间
2013-3-8
在线时间
1282 小时
发表于 2017-4-14 17:29:47 | 显示全部楼层
不需要操作,下次使用时会覆盖的
回复 支持 反对

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2013-8-11
在线时间
5 小时
 楼主| 发表于 2017-4-14 17:43:00 | 显示全部楼层
augustedward 发表于 2017-4-14 17:29
不需要操作,下次使用时会覆盖的

覆盖应该不是很理想;如果上次分配空间释放以后不擦除,但是内存表对应块标识字节都清除了,可以用用来再次分配.而上次分配的一部分,下次分配给另一个指针变量,而对这部分进行操作时没有写成功,但是读取的时候却得到内容,这样应该有问题.
活到老,学到老。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 01:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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