Jim*_*mmy 4 c++ memory new-operator
在我看来,这就是内存在C ++中的工作方式:
如果使用,new则要求编译器的实现从堆中提供一些内存(任何内存)。
如果您使用placement new语法,则您将要求重新分配一个特定的内存位置,该地址您已经知道该地址(假设它也是来自堆),该地址最初也是new在某个时候从操作员分配的。
我的问题是这样的:
无论如何,是否有先验知道程序可以使用哪些内存的位置(即,无需从new操作员已经分配给您的堆中重新分配内存)?
堆中的内存是否连续?如果是这样,您能找出它的起点和终点吗?
ps只是试图尽可能快地接近金属...
并非以任何便携式方式。现代操作系统无论如何都倾向于使用分页(也称为虚拟内存),因此可用内存量不是一个可以轻易回答的问题。
如果您需要编写自己的堆,则不需要堆中的内存是连续的,这并不难做到。