0

除了操作系统提供的之外,我可以为进程提供额外的空间吗?是否可以将额外的可拆卸内存用于此类目的。

4

3 回答 3

2

除了操作系统提供的之外,我可以为进程提供额外的空间吗?

不,你不能,对于每一块内存,你都必须请求你的操作系统。
malloc()、new 和其他内存分配函数和运算符解析为系统调用,请求操作系统为程序提供内存。

于 2012-08-21T04:16:30.700 回答
0

有一些晦涩难懂的方法。例如,如果您要将 Windows CE 设备连接到 Windows PC,则可以通过“RAPI”接口访问该设备的内存。Windows 操作系统不会知道这个设备内存;这是通过 ActiveSync 服务处理的。不过,这不是很快的记忆。

于 2012-08-21T07:16:59.063 回答
0

每个进程都有一个确定的最大内存空间分配给它,这取决于机器架构。在 32 位机器上,最大可寻址空间为 2^32 字节 ~= 4GB。因此,一个进程通常应该能够处理 4 GB 的内存。但是这个空间分为两部分,1.内核空间和2.进程空间。内核空间用于操作系统驱动程序等,而进程空间是可以分配数据的空间。因此,您可用的内存只是进程空间。

在典型的 Windows XP 机器上,它是平分的。即 2 GB 用于进程空间(但是,有一些方法可以修改它。例如,/3G 选项)。任何超过 2 GB 的分配都会导致内存不足错误。当您从 32 位应用程序迁移到 64 位应用程序时,此进程空间会变得更大。这是迁移到 64 位应用程序的主要动机之一。

因此,为了回答您的问题,进程有一个最大可用内存,超过该内存操作系统拒绝为该进程分配内存。

于 2012-08-21T04:27:20.013 回答