STM32 使用malloc函数内存分配失败的问题

一、函数使用错误

第一次使用malloc函数时没有考虑函数参数的问题

(void *)malloc (size_t );

    GoosePubStructure.AllDataSt = (AllDataTypeDef *)malloc(sizeof(AllDataTypeDef));
 第一次初始化结构体指针时,括号内的长度只给了结构体的长度,导致后面写入的参数出现错误。改为    

GoosePubStructure.AllDataSt = (AllDataTypeDef *)malloc(sizeof(AllDataTypeDef) * GoosePubStructure.dataSetNum);

之后问题解决。

二、使用时没有考虑Stm32初始设置的堆栈大小

出现内存分配失败的情况,即指针的首地址为空,导致后续数据写入出现问题。

在startup_stm32f407xx.s文件内进行修改:

第28行到49行,分别对应栈和堆的大小:

 初始堆栈大小分别为,0x200;0x400;修改后为0x400,和0x400;问题解决。

在cubeMX也可以修改,在project Manager 下的linker Setting:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值