参考链接:keil 下 malloc的使用
1、工程内需要包含头文件<stdlib.h>,malloc位于该头文件内
2、工程配置勾选使用微库Target-Use MicroLIB

特别声明:
一般来说以上两个步骤就可以正常使用malloc函数申请堆空间了,但前提是申请的堆空间不能超过启动文件中规定的堆空间大小(Heap_Size),以下用STM32F103ZET6的启动文件说明:

variables = (int32_t *) malloc(=0x3F4); //1014字节

程序中申请1014个字节堆空间,按道理说是可以成功返回一个具体的地址的,但是程序却返回为0的地址,说明堆空间没有申请成功,通过查看startup_stm32f10x_hd.s文件,摘选如下:

Heap_Size       EQU     0x00000200 ;注意:这里定义了最大堆空间为512字节AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limitPRESERVE8THUMB

因为Heap_Size=512字节,当程序需要申请超过512字节的堆空间时,自然无法成功,所以只要在启动文件中将Heap_Size值适当增大,即可解决该问题!
修改如下:

Heap_Size       EQU     0x00000C00 ;定义3K大小的堆空间AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limitPRESERVE8THUMB

KEIL使用malloc函数申请堆空间失败的解决方法相关推荐

  1. OutOfMemoryError:Java堆空间–分析和解决方法

    java.lang.OutOfMemoryError:Java堆问题是在支持或开发复杂的Java EE应用程序时可能会遇到的最复杂的问题之一. 这篇简短的文章将为您提供此JVM HotSpot Out ...

  2. malloc申请内存空间失败

    上午在调试自己写的一段代码的过程中,发现malloc函数分配内存失败,仔细梳理了一下自己写的代码,失败的malloc操作之前也malloc了两三次,但都是成功的,网上搜了一下,都提到失败的原因可能是因 ...

  3. c语言malloc用法 数组,详解C语言用malloc函数申请二维动态数组的实例

    详解C语言用malloc函数申请二维动态数组的实例 C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单. Sample one #include int main() { c ...

  4. php的email函数发送失败,php中mail函数发送邮件失败的解决方法_php技巧

    本文实例讲述了php中mail函数发送邮件失败的解决方法.分享给大家供大家参考.具体分析如下: php中mail函数是一个自带的发邮件的函数,但是如果你真的要使用mail函数来发邮件那必须是要给你系统 ...

  5. 关于VS Code中C文件调用其他C文件函数失败的解决方法

    关于VS Code中C文件调用其他C文件函数失败的解决方法 在main.c文件中添加 #include <windows.h> 头文件,可以解决.

  6. php fopen函数 返回值,php中fopen函数失败的解决方法

    php中fopen函数失败的解决方法 发布时间:2021-03-29 12:26:30 来源:亿速云 阅读:86 作者:小新 这篇文章将为大家详细讲解有关php中fopen函数失败的解决方法,小编觉得 ...

  7. Sublime Text 无法使用Package Control或插件安装失败的解决方法

    Sublime Text用了一年多了,公司搬家最近突然发现Package Control无法安装新插件了,虽然不影响原有功能的使用,还是要解决它.由于本人用Windows系统,只讨论Windosw下的 ...

  8. Sublime Text 无法使用Package Control或插件安装失败的解决方法【转】

    Sublime Text用了一年多了,公司搬家最近突然发现Package Control无法安装新插件了,虽然不影响原有功能的使用,还是要解决它.由于本人用Windows系统,只讨论Windosw下的 ...

  9. 存储过程mysql报错1271_mysqldump备份失败以及解决方法汇总

    mysqldump备份失败以及解决方法汇总〇 mysqldump: Error: Query execution was interrupted, maximum statement executio ...

  10. ARM开发板上iconv_open(utf-8, gb2312) 调用失败的解决方法(转)

    ARM开发板上iconv_open("utf-8", "gb2312") 调用失败的解决方法 应用程序代码如下: static int code_convert ...

最新文章

  1. nslookup --dns诊断
  2. SSDO AO 图像空间的动态全局光照
  3. matlab如何进行数字信号处理,数字信号处理基础及MATLAB实现(第2版)
  4. matlab中noisbloc,基于小波变换的微弱信号检测技术的研究.doc
  5. mac下更新自带的PHP版本到5.6
  6. Android:解决Failed to load D:\Android-Studio\sdk\build-tools\xx.xx.xx\lib\dx.jar
  7. android23是什么手机,目前 已有23款国产机可升Android8.0 你的手机厂商良心推送了没?...
  8. android 录音机 apk,实时录音机
  9. [论文阅读] (16)Powershell恶意代码检测论文总结及抽象语法树(AST)提取
  10. 2018年注册测绘师考试详情解析
  11. #金项奖获奖项目专题# | 京东闪付---快人一步
  12. C++常见设计模式之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
  13. Unity开发常用工具
  14. 手机图片如何转化为Word文档?简单几步轻松转换
  15. GRLDR外部MENU.LST调用GRLDR内部菜单
  16. php 微信开发 网页授权登录,微信开发网页授权登录——2018年6月2日
  17. CWnd::FromHandle与CWnd::FromHandlePermanent有什么区别
  18. msp430发送pwm信号_使用MSP430G2单片机的PWM模块控制LED指示灯的亮度
  19. 如何将Word默认的两页视图改为单页
  20. 这种技术,让全世界哑巴都能开口说话 | 精选

热门文章

  1. IMEI修改(IMEI第十五位验证码的计算)
  2. SNIFFER(嗅探器)-简介(zt)
  3. 超级快的端口扫描工具blackwater
  4. 进销存excel_Excel教程:教大家做简单的进销存
  5. 电视/电视盒点播APP软件系统定制开发方案
  6. 【Vue】转-Vue.js经典开源项目汇总
  7. 软件测试接口测试测试用例模板
  8. 云龙51单片机视频教程+课件+程序代码+课后作业,零基础入门视频教程
  9. 期末考试_细胞自动机
  10. Java三大特性的理解