嗨,恩智浦社区、
HEAP_SIZE = DEFINED(__heap_size__) ? __heap_size__ : 0x00001000;
堆内存分配是通过链接器脚本在 SRAM 区域定义的。
谁能告诉我上述堆是否被标准库使用,比如 malloc、calloc 和 free?
@vignesh3, 是的 _sbrk 是 malloc() 用来递增 "heap_end "并返回指针的函数。因此,从这个感知上讲,它分配内存。
使用函数 "free()",内存本身就会被释放。这意味着该功能将此内存标记为可重复使用。
_sbrk 是用来分配内存的吧?
如果是这样,哪里能免费?
感谢您的回复。
@vignesh3, 是的,C 运行时将使用堆区域来处理动态分配的内存请求。堆是在启动代码中初始化的。链接器使用名为 HEAP_SIZE 的变量定义堆大小。
malloc 使用 _sbrk 函数。
_sbrk 使用链接器中定义的 __heap_limit 等变量。这就是动态分配内存的定义和使用方式。
希望对您有所帮助!