c - C 程序的内存布局(物理 View 与逻辑 View )

标签 c memory memory-management

根据我的理解,C程序的逻辑 View 分为很多段,例如

Code
Data
Bss
Heap
Stack (typical implementation: Heap and Stack growing in opposite directions).

这些段在物理内存中是如何对齐的?

根据我的理解,物理内存使用固定大小的帧来存储进程的页面。

如果是这样的话,那么这与用户 View 实际上是如何一致的呢?示例:堆栈和堆区域可能分布在许多页面中。页面可能分散在内存中。

最佳答案

If that is the case then what how is this actually consistent with the user view? Example: the stack and heap area might be distributed among many pages. Pages might be scattered through the memory.

虚拟内存系统将“虚拟”地址映射到物理地址,以便用户代码永远不知道或关心它正在使用的内存位于物理内存中的位置。这通常是使用硬件内存管理单元 (MMU) 来完成的,但也可以由没有 MMU 的操作系统来完成。就用户代码而言,只有一个始终可用的大地址空间。

关于c - C 程序的内存布局(物理 View 与逻辑 View ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26046523/

相关文章:

c - 分段故障

c - C语言中如何删除字符串最后一部分

c++ - 如何分析内存使用情况?

linux - Ontotext GraphDB 进程终止

c++ - 当程序退出时,是否有理由在 C++ 中调用 delete?

c - 指向函数原型(prototype)的指针

c - C 中的 snprintf() 不单独处理目标字符串的最低两个字节

memory - 如何在 JVM 上调试 native 内存中的泄漏?

c - realloc-call 后没有变化

c++ - EasyBMP c++ 的 RGBApixel 内存问题