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

来源:互联网 发布:新ubantu系统安装caffe 编辑:程序博客网 时间:2024/05/21 17:44
测试环境:STM32+IAR6.4
堆区大小设置为0x1000(默认值)。
变量定义:
     char *p=NULL;
     char *p2=NULL;
1.  申请内存大小超过设置值
      p = (char *)malloc(sizeof(char)*5090);
     malloc返回NULL,使用这段内存是会出错(硬件错误)。

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

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.申请一段内存,使用完毕后释放掉,然后再申请一段内存

     
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。
0 0
原创粉丝点击