KEIL使用malloc函数申请堆空间失败的解决方法
参考链接: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函数申请堆空间失败的解决方法相关推荐
- OutOfMemoryError:Java堆空间–分析和解决方法
java.lang.OutOfMemoryError:Java堆问题是在支持或开发复杂的Java EE应用程序时可能会遇到的最复杂的问题之一. 这篇简短的文章将为您提供此JVM HotSpot Out ...
- malloc申请内存空间失败
上午在调试自己写的一段代码的过程中,发现malloc函数分配内存失败,仔细梳理了一下自己写的代码,失败的malloc操作之前也malloc了两三次,但都是成功的,网上搜了一下,都提到失败的原因可能是因 ...
- c语言malloc用法 数组,详解C语言用malloc函数申请二维动态数组的实例
详解C语言用malloc函数申请二维动态数组的实例 C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单. Sample one #include int main() { c ...
- php的email函数发送失败,php中mail函数发送邮件失败的解决方法_php技巧
本文实例讲述了php中mail函数发送邮件失败的解决方法.分享给大家供大家参考.具体分析如下: php中mail函数是一个自带的发邮件的函数,但是如果你真的要使用mail函数来发邮件那必须是要给你系统 ...
- 关于VS Code中C文件调用其他C文件函数失败的解决方法
关于VS Code中C文件调用其他C文件函数失败的解决方法 在main.c文件中添加 #include <windows.h> 头文件,可以解决.
- php fopen函数 返回值,php中fopen函数失败的解决方法
php中fopen函数失败的解决方法 发布时间:2021-03-29 12:26:30 来源:亿速云 阅读:86 作者:小新 这篇文章将为大家详细讲解有关php中fopen函数失败的解决方法,小编觉得 ...
- Sublime Text 无法使用Package Control或插件安装失败的解决方法
Sublime Text用了一年多了,公司搬家最近突然发现Package Control无法安装新插件了,虽然不影响原有功能的使用,还是要解决它.由于本人用Windows系统,只讨论Windosw下的 ...
- Sublime Text 无法使用Package Control或插件安装失败的解决方法【转】
Sublime Text用了一年多了,公司搬家最近突然发现Package Control无法安装新插件了,虽然不影响原有功能的使用,还是要解决它.由于本人用Windows系统,只讨论Windosw下的 ...
- 存储过程mysql报错1271_mysqldump备份失败以及解决方法汇总
mysqldump备份失败以及解决方法汇总〇 mysqldump: Error: Query execution was interrupted, maximum statement executio ...
- ARM开发板上iconv_open(utf-8, gb2312) 调用失败的解决方法(转)
ARM开发板上iconv_open("utf-8", "gb2312") 调用失败的解决方法 应用程序代码如下: static int code_convert ...
最新文章
- nslookup --dns诊断
- SSDO AO 图像空间的动态全局光照
- matlab如何进行数字信号处理,数字信号处理基础及MATLAB实现(第2版)
- matlab中noisbloc,基于小波变换的微弱信号检测技术的研究.doc
- mac下更新自带的PHP版本到5.6
- Android:解决Failed to load D:\Android-Studio\sdk\build-tools\xx.xx.xx\lib\dx.jar
- android23是什么手机,目前 已有23款国产机可升Android8.0 你的手机厂商良心推送了没?...
- android 录音机 apk,实时录音机
- [论文阅读] (16)Powershell恶意代码检测论文总结及抽象语法树(AST)提取
- 2018年注册测绘师考试详情解析
- #金项奖获奖项目专题# | 京东闪付---快人一步
- C++常见设计模式之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- Unity开发常用工具
- 手机图片如何转化为Word文档?简单几步轻松转换
- GRLDR外部MENU.LST调用GRLDR内部菜单
- php 微信开发 网页授权登录,微信开发网页授权登录——2018年6月2日
- CWnd::FromHandle与CWnd::FromHandlePermanent有什么区别
- msp430发送pwm信号_使用MSP430G2单片机的PWM模块控制LED指示灯的亮度
- 如何将Word默认的两页视图改为单页
- 这种技术,让全世界哑巴都能开口说话 | 精选