让我澄清一下:我了解 new 和 delete(和 delete[])是如何工作的。我了解堆栈是什么,并且了解何时在堆栈和堆上分配内存。
然而,我不明白的是:在堆上分配内存的位置。我知道我们应该把堆看作是一个几乎无限的 RAM 大池,但肯定不是这种情况。
什么控制选择堆内存的存储位置以及它如何选择?
另外:术语“将内存返回给操作系统”是我经常遇到的一个。这是否意味着堆在所有进程之间共享?
我之所以关心这一切,是因为我想更多地了解内存碎片。我认为在学习如何处理内存碎片之前了解堆的工作原理是个好主意,因为我没有足够的内存分配经验,也没有 C++ 直接深入研究。
c++ memory memory-management heap-memory memory-fragmentation