历史上的今天
返回首页

历史上的今天

今天是:2025年06月07日(星期六)

2018年06月07日 | STM32堆区分配内存--malloc的使用

2018-06-07 来源:eefocus

测试环境:STM32+IAR6.4

堆区大小设置为0x1000(默认值)。

变量定义:

     char *p=NULL;

     char *p2=NULL;

1.  申请内存大小超过设置值

      p = (char *)malloc(sizeof(char)*5090);

     malloc返回NULL,使用这段内存是会出错(硬件错误)。

2.申请两段内存,每段不超过设定值,但总和超过设定值。

[cpp] view plain copy

 在CODE上查看代码片派生到我的代码片

p = (char *)malloc(sizeof(char)*3090);  

  

    if(p== NULL)  

    {  

            printf("malloc error1\r\n");  

    }  

    p2 = (char *)malloc(sizeof(char)*3090);  

    if(p2== NULL)  

    {  

        printf("malloc error2\r\n");  

    }  

3.申请一段内存,使用完毕后释放掉,然后再申请一段内存

     

[cpp] view plain copy

 在CODE上查看代码片派生到我的代码片

p = (char *)malloc(sizeof(char)*3090);  

  

    if(p== NULL)  

    {  

            printf("malloc error1\r\n");  

    }  

    ...  

    free(p);  

    p2 = (char *)malloc(sizeof(char)*3090);  

    if(p2== NULL)  

    {  

        printf("malloc error2\r\n");  

    }  

    ...  

    free(p2);  

  使用正常。


  申请内存,使用完毕后要释放。

  IAR设置堆栈大小 option->Linker -> Config -> Override default ->Edit。


推荐阅读

史海拾趣

ABC [ABC Taiwan Electronics Corp]公司的发展小趣事

近年来,随着环保意识的日益增强,ABC Taiwan Electronics Corp积极响应绿色生产的号召。公司引入了环保材料和节能技术,降低了生产过程中的能耗和排放。同时,公司还加强了废弃物的处理和回收利用,实现了资源的循环利用。此外,ABC还积极参与社会公益活动,支持教育事业和环保事业,履行了企业的社会责任。

这五个故事展示了ABC Taiwan Electronics Corp从创业初期的艰难起步到逐步成长为国际知名电子零件供应商的发展历程。通过技术突破、国际化战略、产业升级和绿色生产等方面的努力,ABC不断应对市场的变化和挑战,实现了稳健的发展。

Accetek公司的发展小趣事

随着产品质量的不断提升和市场口碑的积累,Accetek公司开始积极拓展国内外市场。公司参加了多个国际电子展览和交流活动,与全球多家知名企业建立了合作关系。同时,公司还加强了品牌建设和市场推广工作,通过广告宣传、媒体合作等方式提高品牌知名度和美誉度。这些举措有效地提升了公司的市场竞争力,为公司的快速发展提供了有力支持。

Danaher Corporation公司的发展小趣事

丹纳赫集团一直重视科技创新和产品研发。在电子行业,丹纳赫集团不断推出具有创新性和竞争力的产品,如高精度测量仪器、自动化测试设备和电子制造解决方案等。这些产品不仅满足了客户对高质量、高效率生产的需求,还帮助丹纳赫集团在电子行业中树立了良好的品牌形象。

Appointech Inc公司的发展小趣事

随着技术的不断进步,Appointech Inc公司意识到只有不断创新才能在竞争激烈的市场中立足。因此,公司加大了对研发的投入,不断引进新的技术和设备。经过团队的不懈努力,公司成功开发出了一款具有颠覆性的电子产品,该产品不仅性能卓越,而且具有高度的集成性和便利性,为公司在行业中树立了新的标杆。

Advanced Technology Corp公司的发展小趣事

为了进一步提升市场份额和品牌影响力,ATC公司积极开展市场拓展活动。公司加强与国际市场的联系,与多家知名企业建立了战略合作关系,共同开拓新的市场领域。同时,ATC公司还注重品牌塑造,通过参加行业展会、举办技术研讨会等方式,提升品牌知名度和美誉度。这些努力使得ATC公司在全球电子市场中占据了一席之地。

CBM_America_Corporation公司的发展小趣事

在面临激烈的市场竞争时,CBM_America_Corporation选择与一家国际知名的电子制造商建立战略合作关系。通过共享技术资源和市场渠道,两家公司共同开发了一款具有竞争力的智能设备。这一合作不仅提升了CBM的品牌影响力,还为其带来了稳定的订单和利润增长。随着合作的深入,CBM逐渐在电子行业中占据了重要的地位。

问答坊 | AI 解惑

发个单片机指令机

我是新手,第一次发错了…

查看全部问答>

求教放大器的放大倍数

大家好,小弟想请教各位大侠一个问题:电压并联负反馈电路为什么输出还和芯片的工作电压有关系啊,一般输出不会大于工作电压,我写论文需要放大倍数的公式啊。附件中这个电路,若输入为1V,如果5V供电,就输出-3.6V,如果是18V供电,就输出-16.5V, ...…

查看全部问答>

【藏书阁】贴片元器件应用手册

目录: 第一部分 贴片元器件基础知识 1.1片状电阻器 1.1.1片状电阻器的阻值和允差标注方法 1.1.2常见片状电阻器介绍 1.1.3片状电阻器的使用 1.2片状电容器 1.2.1片状电容器容量和允差标注方法 1.2.2常见片状电容器介绍 1.2 ...…

查看全部问答>

Vxworks如何设定键盘无缓冲输入

我现在的firmware是键盘输入完后敲回车输入字符串才提交给系统。 可是我要做快捷键响应,要求每敲一个键就马上提交给系统,并且不 在屏幕上回显,类似TC的getch()函数,我应该 如何做,当我用ioctl(fd, FIORBUFSET, 0)把Read的缓冲区关闭 后 ...…

查看全部问答>

几个uc/os-II的问题(实在找不到答案)

uc/os-II中任务调度是分时的还是占先式? uc/os-II中设计一个任务需要考虑哪些问题? uc/os-II中任务通信有哪些方式?…

查看全部问答>

CE50的GWES组件有没公开源码?LCD驱动里面的触摸屏坐标(已经知道怎么修正它了)怎么转成系统的坐标?这两个之间的转换关系是?

CE50的GWES组件有没公开源码?LCD驱动里面的触摸屏坐标(已经知道怎么修正它了)怎么转成系统的坐标?这两个之间的转换关系是?…

查看全部问答>

能用PPC2003模拟器下东西到CPU为PXA270的PDA吗

我下载时老是提示 The ARM Unknow CPU does not support configuration Test -Win32(WCE AEMV4)Debug!  Executable will not run on device. 我的PDA  CPU为PXA270 多谢各位帮忙…

查看全部问答>

avr单片机电子书

求AVR单片机原理电子书,谢谢啊。有的请上传或Email:879014874@qq.com.…

查看全部问答>

运营商有效整合的一些思考

     随着通信业的发展,由原来的邮电分分合合到现在的移动,联通,电信,整合后的三家企业中,可能移动变动不大,因为它并购了铁通,一个市场占有率很小的企业,移动本来核心员工也少,所以凭借它在2G市场上得优势,基本上是 ...…

查看全部问答>

DSP flash被锁

由于程序问题,程序写入了密码区,导致flash被锁然后查编码,解码刚开始两块板子都解码成功,但是在擦除是又被锁了一块板子解了两次终于擦除成功但另外一块再解码,擦除到一半又被锁又解码,擦除到一半被锁现在解码都解不了了求助高手是什么原因, ...…

查看全部问答>