STM32CUBEIDE——malloc

malloc()动态分配内存存储空间
头文件:#include
原型:void *malloc(size_t size)
参数说明:size为需要分配的内存空间大小,单位是
Byte

函数说明:在堆区分配一块size Byte大小的内存空间,用于存放数据,这块内存空间被分配后不会被初始化,因此这些内存空间对应的值是未知的。如果需要对分配的内存初始化,可以使用 calloc() 函数
返回值:分配成功返回指向分配的内存的指针,注意的是虽然该函数返回值类型是void *,void并不是指没有返回值或者空指针,而是返回指针类型未知,所以在使用malloc()函数经常要使用到强制类型转换

char *pr = (char *)malloc(10);

calloc() 动态分配内存空间并初始化
头文件: #include
原型:void *calloc(size_t size, size_t num);
参数说明:num为需要连续分配的空间的个数,size为每个分配空间的大小,单位Byte。
函数说明:在内存中动态分配num个长度为size Byte的连续的内存空间,并给每个字节都初始化为0。
返回值:分配成功返回指向该内存的地址,失败则返回NULL,同样和malloc()函数一样的是函数返回值类型是void *。

在实际使用中,malloc使用的是STM32的heapsize,因此malloc能够使用的最大空间即为单片机内存分配的heapsize大小。当需要获取较大的存储空间时,还要考虑是否有内存碎片导致malloc无法获取足够大的连续存储空间。
在STM32CUBEMX/CUBEIDE中,可以在配置界面-Project Manger中修改Heap Size。
STM32CUBEIDE——malloc_第1张图片
另外,在STM32CUBEIDE中需要将reduced C 改为 Standard C,否则调用malloc函数时有可能会出现内存足够大时动态分配失败。
STM32CUBEIDE——malloc_第2张图片

你可能感兴趣的:(stm32,hal)