【发布时间】:2021-10-23 01:05:07
【问题描述】:
我一直试图了解内存是如何工作的,在内存方面,特别是在嵌入式系统中,在应用程序执行过程中一步一步发生了什么。更多 C/C++ 中的上下文
- 应用程序的堆栈外、堆、静态和代码内存,存储在 RAM 或易失性内存中,哪些部分存储在非易失性内存中?还是在执行应用程序时,将整个应用程序复制到 RAM 或易失性内存中?
- 调用函数时,是将该函数的所有汇编指令都复制到堆栈中还是只为函数分配内存?
- 如果只为函数实时分配内存,这意味着这些变量的地址必须添加到函数的汇编代码中,这是怎么回事?
- 当我们在 C 中为嵌入式系统编写代码时,谁在嵌入式系统堆栈内存分配等中执行所有这些操作? MCU 中没有 OS 为我们做内存管理,所以在 MCU 中的函数调用期间谁来管理这个内存分配
【问题讨论】:
-
没有 C/C++。 C 或 C++。
-
你所有的想法都被使用了。一切都取决于硬件和 ABI。即使是较新的 uP 虚拟化内存,您的代码也可以在磁盘上,并且可以在需要时加载到 RAM 中:)
标签: c compiler-construction stack embedded dynamic-memory-allocation