使用malloc申请内存不成功

2019-07-14 15:22发布

写一个程序,串口收到图片,利用STemWin显示图片。程序先初始化GUI,然后进入主体,存放图片的大小设为64K.
刚开始我是直接申请了一个大数组,能完成接收和显示,但是后来考虑到数组太大,考虑到可能由于数组太大的缘故,
就尝试malloc和free函数处理一下,具体程序见下,但是调试时malloc怎么也申请不成功,总是进入GUI_Delay(1000)
我用的是STM32F429DISCOVERY,看手册片上256K,还有64MBit片外SDRAM,应该够用吧,请教一下是为什么?


    uint8_t * databuf;
    databuf = (uint8_t *)malloc(63354*sizeof(uint8_t));
    if(databuf == NULL){
      GUI_Delay(1000);
   }
    HAL_UART_Receive_DMA(&Uart6Handle, databuf, 63354);
    while(1){
   
       if(UART_RECV_STA == 6){
          UART_RECV_STA=0;
         GUI_BMP_Draw(databuf,50,40);
        break;
        }
         GUI_Delay(100);        
   }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
亲爱的娜娜
1楼-- · 2019-07-14 18:12
你这malloc()直接取的堆的空间吧,你设置的堆的空间有这么大么。
as2969559
2楼-- · 2019-07-14 21:23
亲爱的娜娜 发表于 2018-12-10 10:07
你这malloc()直接取的堆的空间吧,你设置的堆的空间有这么大么。

哦哦,刚才我从网上查了查,注意到这个问题,可是一改 .s 文件中 heap_size 的大小,就出现好多
no space in excution regions in .ANSY selector matching ...  错误,有办法解决吗
as2969559
3楼-- · 2019-07-14 22:30
 精彩回答 2  元偷偷看……
亲爱的娜娜
4楼-- · 2019-07-14 23:51
as2969559 发表于 2018-12-10 10:31
嗯嗯,最后用的外部SDRAM. 对于RAM这块看来还真得了解一下,有几个问题还是想问一下。片上的256K是SRAM,开发板上外扩的是SDRAM,两种存储器在工作原理上有区别,速度有快慢,但同样都是作为RAM使用。刚开始我以为外接的SDRAM只要配置好后,使用上就跟片上RAM没什么区别,用来存放临时变量什么的,经过这次调试,我发现在变 ...

全局变量,堆和栈空间全部定义到外部SRAM的方法和一个配套例子
局部变量应该在默认在栈中,你参考上面的例子修改下看行不行,我没有实测过。
as2969559
5楼-- · 2019-07-15 00:39
亲爱的娜娜 发表于 2018-12-10 10:48
全局变量,堆和栈空间全部定义到外部SRAM的方法和一个配套例子
局部变量应该在默认在栈中,你参考上面的例子修改下看行不行,我没有实测过。

嗯嗯,原来是这样。
烈阳异丙醇
6楼-- · 2019-07-15 04:49
mark
好贴留名。。关键处,一点就可以解决问题了。

一周热门 更多>