2175454_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2175454_zh-CN

2175454_zh-CN

动态内存分配疑问

嗨,恩智浦社区、

HEAP_SIZE = DEFINED(__heap_size__) ? __heap_size__ : 0x00001000;

堆内存分配是通过链接器脚本在 SRAM 区域定义的。

谁能告诉我上述堆是否被标准库使用,比如 malloc、calloc 和 free?

Re: dynamic memory allocation doubts

@vignesh3, 是的 _sbrk 是 malloc() 用来递增 "heap_end "并返回指针的函数。因此,从这个感知上讲,它分配内存。
使用函数 "free()",内存本身就会被释放。这意味着该功能将此内存标记为可重复使用。

Re: dynamic memory allocation doubts

你好@gaurav_sharma

_sbrk 是用来分配内存的吧?

如果是这样,哪里能免费?

感谢您的回复。

Re: dynamic memory allocation doubts

@vignesh3, 是的,C 运行时将使用堆区域来处理动态分配的内存请求。堆是在启动代码中初始化的。链接器使用名为 HEAP_SIZE 的变量定义堆大小。

malloc 使用 _sbrk 函数。
_sbrk 使用链接器中定义的 __heap_limit 等变量。这就是动态分配内存的定义和使用方式。

希望对您有所帮助!

Tags (1)
No ratings
Version history
Last update:
‎11-22-2025 08:31 AM
Updated by: