硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2896|回复: 2
收起左侧

EMWIN 申请多个内存空间 存储SD卡种流位图失败

[复制链接]

7

主题

10

回帖

31

积分

新手上路

积分
31
发表于 2017-8-10 11:58:38 | 显示全部楼层 |阅读模式
想在button控件上显示图片,把三张流位图文件放在内存卡中,读取三张流位图文件时,第一张可以读取成功,第二三张不能成功,
调试发现  hMem = GUI_ALLOC_AllocZero(file1.obj.objsize); 读取第一张流位图 返回的地址正确。读取第二三张时,返回的地址为0x00000000
无法继续从内存卡中读取流位图,不知什么原因。难道GUI_ALLOC_AllocZero()只能申请一次内存,必须释放后,才能再次申请?


Buttom_Play_StearmBitmap=_ShowStreamBitmap("0:/Doc/start.dta");
Buttom_Setting_StearmBitmap=_ShowStreamBitmap("0:/Doc/setting.dta");
Buttom_About_StearmBitmap=_ShowStreamBitmap("0:/Doc/about.dta");
   



GUI_HMEM _ShowStreamBitmap(const char *sFilename)
{
    GUI_HMEM hMem,hMem1,hMem2;
    char *_acBuffer;
#if !defined Method1
    GUI_BITMAP Bitmap;
    GUI_LOGPALETTE Palette;
#endif
   
    /* 打开文件 */        
    result = f_open(&file1, sFilename, FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);
    if (result != FR_OK)
    {
        return 0;
    }
   
    /* 申请一块内存空间 并且将其清零 */
  hMem = GUI_ALLOC_AllocZero(file1.obj.objsize);
/*将申请到内存的句柄转换成指针类型 */
    _acBuffer = GUI_ALLOC_h2p(hMem);
    //GUI_ALLOC_Free(hMem);
/* 读取文件到动态内存 */
result = f_read(&file1, _acBuffer, file1.obj.objsize, &bw);
if (result != FR_OK)
{
         return 0;
}

f_close(&file1);

return hMem;
     
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2017-8-10 13:45:19 | 显示全部楼层
你的动态内存多大,是不是第二次申请动态内存不够了,使用emWin的动态内存剩余函数,看看还剩多少。
回复

使用道具 举报

7

主题

10

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2017-8-10 15:18:47 | 显示全部楼层
通过 调用emwin的动态内存剩余函数和动态内存使用函数,观察内存使用情况,剩余的的内存数量不够第二次的申请。说明 分配的动态内存太小,加大动态内存可以了  谢谢
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 07:50 , Processed in 0.036432 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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