java 虚拟机访问对象的两种机制到底有什区别 http://www.cnblogs.com/h2-database/archive/2012/06/27/2572498.html


指针与句柄的区别

    最近两天在复习一些c++的知识,中间发现了许多以前没有注意过的问题。关于句柄以前总是将其理解为指针,其实不然,他们之间有着明显的区别。

    首先,指针指向系统中物理内存的地址,而句柄是windows在内存中维护的一个对象内存物理地址列表的整数索引,句柄是一种指向指针的指针。

    在windows系统中的内存管理一般会将当前处于空闲状态的对象的内存释放掉,当需要访问的时候再重新提交分配物理内存,从而导致对象的物理地址是变化的,

这样就不允许系统直接通过指针来访问(物理地址不断变化)的对象。

    句柄是一种指向指针的指针。由于windows是一种以虚拟内存为基础的操作系统,其内存管理器经常会在内存中来回的移动对象,以此来满足各种应用程序对内存的需求。

而对象的移动意味着对象内存地址的变化,正是因为如此,如果直接使用指针,在内存地址被改变后,系统将不知道到哪里去再调用这个对象。

    windows系统为论文解决这个问题,系统专门为各种应用程序腾出了一定的内存地址(句柄)专门用来记录这些变化的地址(这些内存地址就是指向指针的指针),这些内存地址本身是一直不变化的。windows内存管理器在移动某些对象之后,他会将这些对象新的内存地址传给句柄,告诉他移动后对象去了哪里。

    句柄(稳定的)----->记载着对象在内存中的地址---->对象在内存中的地址(不稳定的)---->记载着实际对象的地址。





图中实线表示初始化的情况,虚线表示在内存管理器处理之后的情况





分类:  C/C++读书笔记
0
0
(请您对文章做出评价)
« 上一篇: vim多窗口编辑
» 下一篇: 忘记了EBS登陆页面链接的地址怎么办

posted on 2012-06-27 11:55 h2内存数据库 阅读(1008) 评论(0编辑 收藏

导航

公告

scrolling="no" frameborder="0" marginheight="0" marginwidth="0" border="0" src="http://strip.taobaocdn.com/tfscom/TB15.KRIFXXXXc6XXXXO04pFXXX.html?refpos=,a,null&pid=mm_10002723_2390296_9777841&upvid=2is2_1455972327572050&src=talos&r=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DMRCBE6BRT_EGJyBTRz5H-C-yqWQNQHCs2EbjpwAF6_D2JviBclOjfXffOW4fsE38o25wyAF6-31Jco7WklmN2e1MXyAMY97XCZhmwW25Kpq%26wd%3D%26eqid%3Dcf2cc9070003f85d0000000356c85f4f&u=http%3A%2F%2Fwww.cnblogs.com%2Fh2-database%2Farchive%2F2012%2F06%2F27%2F2572498.html" style="width: 120px; height: 240px;">
scrolling="no" frameborder="0" marginheight="0" marginwidth="0" border="0" src="http://strip.taobaocdn.com/tfscom/TB15.KRIFXXXXc6XXXXO04pFXXX.html?refpos=,a,null&pid=mm_10002723_2390296_9216101&upvid=2is1_1455972327597886&src=talos&r=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DMRCBE6BRT_EGJyBTRz5H-C-yqWQNQHCs2EbjpwAF6_D2JviBclOjfXffOW4fsE38o25wyAF6-31Jco7WklmN2e1MXyAMY97XCZhmwW25Kpq%26wd%3D%26eqid%3Dcf2cc9070003f85d0000000356c85f4f&u=http%3A%2F%2Fwww.cnblogs.com%2Fh2-database%2Farchive%2F2012%2F06%2F27%2F2572498.html" style="width: 120px; height: 240px;">
昵称: h2内存数据库
园龄: 3年7个月
粉丝: 21
关注: 0
<2012年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

统计

  • 随笔 - 552
  • 文章 - 0
  • 评论 - 7
  • 引用 - 0
scrolling="no" frameborder="0" marginheight="0" marginwidth="0" border="0" src="http://strip.taobaocdn.com/tfscom/TB1tOqVIFXXXXXDXXXXO04pFXXX.html?refpos=,a,null&pid=mm_10002723_2390296_9334263&upvid=2is1_1455972327571376&src=talos&r=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DMRCBE6BRT_EGJyBTRz5H-C-yqWQNQHCs2EbjpwAF6_D2JviBclOjfXffOW4fsE38o25wyAF6-31Jco7WklmN2e1MXyAMY97XCZhmwW25Kpq%26wd%3D%26eqid%3Dcf2cc9070003f85d0000000356c85f4f&u=http%3A%2F%2Fwww.cnblogs.com%2Fh2-database%2Farchive%2F2012%2F06%2F27%2F2572498.html" style="width: 728px; height: 90px;">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值