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

测试环境: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。
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值