×
单片机 > 单片机程序设计 > 详情

STM32堆区分配内存--malloc的使用

发布时间:2020-08-21 发布时间:
|

测试环境: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 ");  

    }  

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

    if(p2== NULL)  

    {  

        printf("malloc error2 ");  

    }  

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

     

[cpp] view plain copy

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

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

  

    if(p== NULL)  

    {  

            printf("malloc error1 ");  

    }  

    ...  

    free(p);  

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

    if(p2== NULL)  

    {  

        printf("malloc error2 ");  

    }  

    ...  

    free(p2);  

  使用正常。


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

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


关键字:STM32  堆区分配内存  malloc 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
msp430的中断优先级和中断嵌套(及容易理解错误的说明)