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

    xiaoxiao2022-06-24  53

    测试环境:STM32+IAR6.4 堆区大小设置为0x1000(默认值)。 变量定义:      char *p=NULL;      char *p2=NULL; 1.  申请内存大小超过设置值       p = (char *)malloc(sizeof(char)*5090);      malloc返回NULL,使用这段内存是会出错(硬件错误)。

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

    [cpp]  view plain  copy   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   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。
    转载请注明原文地址: https://ju.6miu.com/read-1123961.html

    最新回复(0)