如何确定操作系统中未使用内存区域的起始地址?
How to determine the starting address of unused memory region in operating system?
我正在从事一些与 Windows 中 物理内存 中的 巨大对象 相关的项目。
我想创建非常大的数据结构,但因此发现了一些问题。
当我尝试分配大量数据时,我可以创建 heap 允许的最大对象(它还取决于操作系统的体系结构)。
我不确定这是否受到线程私有堆或其他方式的限制。
当我在寻找操作系统如何将数据放入内存时,我发现数据是以某种特定顺序存储的。
还有一些问题...
如果我想创建大对象,我是否应该有一个非常大堆区域在里面分配内存?如果是这样,我必须对数据进行碎片化。
换句话说,有一个想法,找到 starting addresses 个空白区域,然后使用这个未使用的地方将数据放入某个 数据结构.
如果这个想法可以实现,那么它是如何实现的呢?
另一个问题是,您认为该列表是那种 巨大对象 的最佳选择吗?或者也许使用另一个 数据结构 会更好?
您认为选择的数据结构是否可以单独分为两个数据区域,但作为一个对象?
提前致谢,对我的问题的每一个回答都会有所帮助。
这里似乎对内存分配有某种误解。
(1) 大多数操作系统不会线性分配内存。映射到进程地址 space.
的内存中通常存在不连续性
(2) 如果要分配大量内存,应该直接与操作系统进行分配;不是通过堆。
我正在从事一些与 Windows 中 物理内存 中的 巨大对象 相关的项目。 我想创建非常大的数据结构,但因此发现了一些问题。 当我尝试分配大量数据时,我可以创建 heap 允许的最大对象(它还取决于操作系统的体系结构)。 我不确定这是否受到线程私有堆或其他方式的限制。
当我在寻找操作系统如何将数据放入内存时,我发现数据是以某种特定顺序存储的。 还有一些问题...
如果我想创建大对象,我是否应该有一个非常大堆区域在里面分配内存?如果是这样,我必须对数据进行碎片化。 换句话说,有一个想法,找到 starting addresses 个空白区域,然后使用这个未使用的地方将数据放入某个 数据结构.
如果这个想法可以实现,那么它是如何实现的呢?
另一个问题是,您认为该列表是那种 巨大对象 的最佳选择吗?或者也许使用另一个 数据结构 会更好?
您认为选择的数据结构是否可以单独分为两个数据区域,但作为一个对象?
提前致谢,对我的问题的每一个回答都会有所帮助。
这里似乎对内存分配有某种误解。
(1) 大多数操作系统不会线性分配内存。映射到进程地址 space.
的内存中通常存在不连续性(2) 如果要分配大量内存,应该直接与操作系统进行分配;不是通过堆。