2.11.1. 内存模型

您可以选择以下任一内存模型:

单内存区

堆栈从内存区顶部向下增长。 堆从内存区底部向上增长。 这是缺省设置。 由堆管理的内存从来不会缩减。 不能将通过调用 free() 释放的堆内存再次用于其他用途。

双内存区

一个内存区用于堆栈,另一个内存区用于堆。 堆区大小可以是零。 堆栈区可以位于分配的内存中,也可以从执行环境中继承。

要使用双区模型而不是缺省的单区模型,请使用以下任一方法:

  • 汇编语言中的 IMPORT __use_two_region_memory

  • C 中的 #pragma import(__use_two_region_memory)

Note

如果使用双区内存模型,并且未提供任何堆内存,则无法调用 malloc()、使用 stdio 或获取 main() 的命令行参数。

如果将堆区大小设置为 0,并且将 __user_heap_extend() 定义为可扩展堆的函数,则会在需要时创建堆。

有关如何在使用堆或堆区时发出警告消息的详细信息,请参阅调整存储管理中的 __use_no_heap 说明。

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0349AC
Non-Confidential