Windows应用程序内存的问题。

Enter空格 2011-10-21 09:13:40
问下,当Windows下32位的应用程序理论用完了0~4GB的虚拟地址空间后。
其他的应用程序是否就无法继续申请内存了?
...全文
77 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Enter空格 2011-10-21
  • 打赏
  • 举报
回复
谢了,有了自己的答案了。
编程点滴 2011-10-21
  • 打赏
  • 举报
回复
不是,还有外部的存储空间
柯本 2011-10-21
  • 打赏
  • 举报
回复
晕,自己网站上的图片居然看不到
http://hi.csdn.net/space-5102-do-album-picid-952807.html
wjw_scence 2011-10-21
  • 打赏
  • 举报
回复
因为可以用磁盘来做虚拟内存,所以理论上你的硬盘有多大,内存就有多大,这是夸张的说法。
柯本 2011-10-21
  • 打赏
  • 举报
回复
可看下windows有关内存管理资料
首先win32下,每个进程可申请的内存没有4G,只有2G,余下的2G为系统保留,且这个是虚拟内存

你如果在程序用new申请内存,由于内存管理结构等原因,实际只能申到1.9G左右
而这个内存实际并没有完全映射到物理内存(也就是说你申请的内存可能超过物理内存)
且windows的内存管理是按进程分配的,所以它不会影响其它进程内存分配
你可用以下程序测试下:

#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
char *p;
int i=0;
try {
do {
p=new char[1024*1024*8];
i++;
} while(p);
}
catch(...)
{
}
cout << "get Memory "<< i*8 << "M" << endl;
system("pause");
delete p;
return 0;
}


生成EXE后,不退出程序,多次运行.在我机上(物理内存1.5G),都可申请到1984M内存
赵4老师 2011-10-21
  • 打赏
  • 举报
回复
《深入解析Windows操作系统-Windows Internals》
Enter空格 2011-10-21
  • 打赏
  • 举报
回复
还有,貌似用硬盘来虚拟内存,是用户自己做的事吧?
操作系统在内存不够用的时候,会自己转换么?
Enter空格 2011-10-21
  • 打赏
  • 举报
回复
难道系统可以无限制的使用硬盘来虚拟内存?
luciferisnotsatan 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mymixing 的回复:]

引用 4 楼 bdmh 的回复:
还有硬盘可以用来做虚拟内存

....这个我也知道.
我没说清吧,我的意思是一个进程耗尽了自己可耗尽的虚拟的内存,其他的进程是否就申请不到内存了。
[/Quote]
应该可以,他就耗了自己的4G(不过,应用程序只能用用户空间,2G或3G)。系统自己会做切换,把物理内存里的内容切换到磁盘的页面文件(这个最大好像可以过4G)上。所以,即使以前256MB内存作为主流配置装winxp时,还是可以运行。不会256MB物理内存用完后,就申请不到内存了。
Enter空格 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bdmh 的回复:]
还有硬盘可以用来做虚拟内存
[/Quote]
....这个我也知道.
我没说清吧,我的意思是一个进程耗尽了自己可耗尽的虚拟的内存,其他的进程是否就申请不到内存了。
bdmh 2011-10-21
  • 打赏
  • 举报
回复
还有硬盘可以用来做虚拟内存
Enter空格 2011-10-21
  • 打赏
  • 举报
回复
嗯,我就是因为知道每个进程有自己独立的虚拟内存空间,所以才有疑问。
当一个进程耗尽了自己的虚拟空间时,我觉得它也同时耗尽了物理内存空间。
这时如果其他的进程还可以继续申请内存,那多余的内存是哪来的?
luciferisnotsatan 2011-10-21
  • 打赏
  • 举报
回复
每个程序都有自己的独立的虚拟内存空间
bdmh 2011-10-21
  • 打赏
  • 举报
回复
当然不是

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧