【发布时间】:2019-09-29 12:01:31
【问题描述】:
我正在为我的计算机科学专业学习 C 语言的操作系统课程。
我很好奇这是否与分配内存时浪费的空间有关,以及这是否在任何计算机操作系统上有所不同,并且我了解内存的排列方式可以按任何顺序进行最适合系统。
【问题讨论】:
-
堆内存通常必须跟踪内存块的大小,以及已用或空闲列表中下一个内存块的位置。因此,如果您分配 1 个字节的堆内存,则总共可能分配 16-32 个字节,具体取决于平台和实现。相比之下,如果你分配 1 字节的堆栈内存,它可能需要 4 字节来保持对齐(也许,但可能不是,8 字节)。
-
您可以看到内核使用与用户空间程序不同的内存管理功能。您的问题过于宽泛,无法回答 - 但自动存储对象仅限于范围生命周期和堆栈(尤其是内核的大小非常有限)
-
你需要引用一个参考来支持前提并提供一些上下文。例如,您是在谈论每个对象的总体分配,还是存储每个单独对象所需的空间?
-
您的课程可能会要求您编写堆管理器?然后你就会明白为什么了。
标签: c stack heap-memory stack-memory