1. 程式人生 > >STM32堆區分配記憶體--malloc的使用

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。