OpenEdv-开源电子网

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

关于内存管理的一些问题,

[复制链接]

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
发表于 2018-9-26 14:10:31 | 显示全部楼层 |阅读模式
1金钱

正点原子例程里 这mallco_dev.memmap在定义里是一维指针数组,怎么在这使用时是二维的数组
//内存管理控制器
struct _m_mallco_dev mallco_dev=
{
        my_mem_init,                                //内存初始化
        my_mem_perused,                                //内存使用率
        mem1base,mem2base,                        //内存池
        mem1mapbase,mem2mapbase,        //内存管理状态表
        0,0,                                                   //内存管理未就绪
};

u8 my_mem_perused(u8 memx)  
{  
    u32 used=0;  
    u32 i;  
    for(i=0;i<memtblsize[memx];i++)  
    {  
        if(mallco_dev.memmap[memx][i])used++; //// 二维数组
    }
    return (used*100)/(memtblsize[memx]);  
}

最佳答案

查看完整内容[请看2#楼]

mem1mapbase[MEM1_ALLOC_TABLE_SIZE]; //内部SRAM内存池MAP 最后指向的是一个数组。想要判断该数组有没有被使用。mallco_dev.memmap[memx] 所以这个数组不是二维数组
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
 楼主| 发表于 2018-9-26 14:10:32 | 显示全部楼层
mem1mapbase[MEM1_ALLOC_TABLE_SIZE];                 //内部SRAM内存池MAP  最后指向的是一个数组。想要判断该数组有没有被使用。mallco_dev.memmap[memx][i] 所以这个数组不是二维数组
回复

使用道具 举报

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
 楼主| 发表于 2018-9-26 14:11:53 | 显示全部楼层
这是.h文件里定义的
//内存管理控制器
struct _m_mallco_dev
{
        void (*init)(u8);                                        //初始化
        u8 (*perused)(u8);                                      //内存使用率
        u8         *membase[SRAMBANK];                                //内存池 管理SRAMBANK个区域的内存
        u16 *memmap[SRAMBANK];                                 //内存管理状态表
        u8  memrdy[SRAMBANK];                                 //内存管理是否就绪
};
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 05:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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