woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

如何判断程序new出的空间是否是虚拟内存?

当我申请一段内存空间时,怎么能够知道他分配给我的是真实的内存空间,还是虚拟内存呢? 问题点数:100、回复次数:21Top

1 楼freefalcon(心宇—消失中...)回复于 2004-05-09 12:56:49 得分 5

没办法知道吧,而且知道了又有什么用呢?  
Top

2 楼f123(风子)回复于 2004-05-09 12:58:10 得分 0

如果知道了,我可以想办法少用点内存呀。Top

3 楼cngdzhang()回复于 2004-05-09 13:09:04 得分 10

new   好象不行  
  但是windows的alloc可以知道  
  如果指定的是moveable,那么分配的内存可以在物理内存也可以在虚拟内存  
Top

4 楼runall(龙行天下)回复于 2004-05-09 13:12:23 得分 2

如果你的内存很小,有可能分配到虚拟内存上  
  如果你的内存很大,就有可能是真实的内存空间Top

5 楼outiejun(努力赚钱,用心得分儿)回复于 2004-05-09 13:13:41 得分 2

内存很大也有可能分配到虚拟内存上。Top

6 楼julyclyde(Java初学(大学不教只好自己学))回复于 2004-05-09 13:22:23 得分 2

知道了又如何呢?无所谓啊Top

7 楼zhouqingyuan(浪帆)回复于 2004-05-09 13:22:32 得分 10

没有办法知道,不过你可以关闭使用虚拟内存,这样分配给你的都是真实的内存空间了。  
  不过这样子有什么意思呢?Top

8 楼junnyfeng(风歌)回复于 2004-05-09 13:26:38 得分 1

看它的地址,辨别是否在堆中Top

9 楼f123(风子)回复于 2004-05-09 13:31:54 得分 0

哦,怎么看地址知道?  
  new的空间都是在堆里面的呀.Top

10 楼f123(风子)回复于 2004-05-09 13:33:34 得分 0

如果我知道一个变量是用的虚拟内存,那我就尽可能少用那个变量,以提高程序速度呀。Top

11 楼freefalcon(心宇—消失中...)回复于 2004-05-09 13:39:50 得分 24

如果我知道一个变量是用的虚拟内存,那我就尽可能少用那个变量,以提高程序速度呀。  
  ——这个不是固定的啊,也许你这一次分配它位于物理内存中,而下一次运行时由于整个内存空间不足操作系统就将它放到虚拟内存中去了  
  实际上windows隐藏了很多细节,就算你想让你的程序都用物理内存,但系统里面难道就没有其它程序了吗?用不用虚拟内存,完全是操作系统根据当时的具体情况所作的处理啊Top

12 楼dft2000(皮皮)回复于 2004-05-09 16:51:29 得分 10

没有意义   你控制不了。虚拟内存的交换由系统管理。不活动的程序被交换出去。活动交换进来。现在不需要考虑内存的的大小和多少。Top

13 楼classrect(以前的号丢了,郁闷)回复于 2004-05-12 10:21:05 得分 1

晕!那要操作系统干吗?Top

14 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2004-05-12 11:30:59 得分 5

new出来的本来就是虚拟地址.  
  虚拟地址到物理地址的对应是系统内存管理的.Top

15 楼iidj(红叶香山)回复于 2004-05-12 11:37:29 得分 5

不要想那些和问题本身关系不大的事。那样会影响你的整个思路的。  
  该由谁去管的就由谁去管吧。我们的自由本就不小了。  
  如果你能自主控制你的心跳,胃消化食物,肝解毒,肠消化食物,等等等等,  
  那么你还能做什么?  
  还能写C++程序吗?  
  顺其自然吧。  
  当没有特殊要求的时候!  
Top

16 楼yuwenzhou(宇文周)回复于 2004-05-12 11:44:16 得分 1

想也是不对的Top

17 楼vcchunhong(願意偽祢)回复于 2004-05-12 11:59:42 得分 1

呵楼主的想法地区很复杂~  
  没必要想那么多拉  
  ~Top

18 楼BluntBlade(信仰迷离·重构之道,在于Redo/Undo之间)回复于 2004-05-12 12:09:37 得分 1

楼主把简单问题复杂化了……呵呵。Top

19 楼steedhorse(晨星)回复于 2004-05-12 13:00:50 得分 5

一段内存需要用的访问的时候肯定是在内存中,只有当满足一定条件(比如好长时间没被访问到而且内存又不足以容纳所有进程所需的内存空间时),才会被交换到外存中,当下次访问时还是会调入内存,不存在CPU到虚拟内存的直接访问。  
  总之,这个事情是操作系统的任务,楼主概念没有搞清楚。  
  任何一段内存里的内容都又可能被交换到虚拟内存中,你怎么决定多访问这一块,少访问那一块?  
  而且数据的访问是由你的程序逻辑决定的,而不是由内存使用决定的。怎么可能根据内存使用来决定访问哪些数据呢?如果想楼主说的那样,当我们编辑一个Word文档的时候,Word发现有几个字目前在虚拟内存中,那么Word就可以不显示这几个字了吗?Top

20 楼TREEDIAO()回复于 2004-05-12 13:42:46 得分 5

无意义的。这是操作系统的事。楼主你是管不了的。Top

21 楼zxs790501(沧海一粟)回复于 2004-05-12 13:45:48 得分 10

虚拟内存是由操作系统动态调整的吧  
  程序员怎么能控制呢?  
  OS(操作系统)负责内存与外存的通讯,你不必管(你管不了的)Top

posted on 2008-10-20 13:23 肥仔 阅读(801) 评论(0)  编辑 收藏 引用 所属分类: Windows开发


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理