`

C++ 句柄与指针的区别

阅读更多

学习C++的人都知道句柄和指针,而且我发现很多人在句柄与指针之间直接划等号,对我们来说两者都是地址,我觉的这也造成很多人将句柄和指针划等号的直接原因。

  首先说指针吧。通俗一点就是地址,他是内存的编号,通过它我们可以直接对内存进行操作,只要地址不变,我们每次操作的物理位置是绝对不变,记住这句话,这是句柄和指针的重大区别所在。

  再说说句柄吧,一般是指向系统的资源的位置,可以说也是地址。但是这些资源的位置真的不变,我们都知道window支持虚拟内存的技术,同一时间内可能有些资源被换出内存,一些被换回来,这就是说同一资源在系统的不同时刻,他在内存的物理位置是不确定的,那么window是如何解决这个问题呢,就是通过句柄来处理资源的物理位置不断变化的这个问题的。window会在物理位置固定的区域存储一张对应表,表中记录了所有的资源实时地址,句柄其实没有直接指向资源的物理地址,而是指向了这个对应表中的一项,这样无论资源怎样的换进换出,通过句柄都可以找到他的实时位置。

  总的来说,通过句柄可以屏蔽系统内部的细节,让程序设计可以不必考虑操作系统实现的细节。如果还不能理解句柄与指针之间的区别,可以想象指向指针的指针,可以把句柄当作一个指向指针的指针来理解。

http://www.cnblogs.com/kanong/archive/2010/09/04/1818020.html

分享到:
评论

相关推荐

    C++中句柄和指针的区别

    在C++编程中,句柄和指针是两种不同的数据访问机制,它们都在不同场景下用于访问和操作内存中的对象。尽管两者都能通过一个较小的数据值来引用或控制大量数据,但它们的本质和用途有所不同。 首先,句柄是一个抽象...

    VC++中句柄与指针的区别

    VC++中句柄与指针的区别 在VC++中,句柄和指针是两个基本概念,但它们之间的区别却很少被人所了解。本文将对句柄和指针的区别进行详细的阐述,并从多方面对它们进行比较。 首先,指针是内存的编号,通过它我们可以...

    c++句柄,智能指针 指针间的区别

    "c++句柄、智能指针和指针的区别" 在C++编程中,句柄、智能指针和指针是三个相关但不同的概念。理解它们之间的区别对于初学者来说非常重要。 首先,让我们来讨论指针和句柄的区别。指针是指向物理内存地址的指针...

    C++指针及句柄

    ### C++指针及句柄详解 #### 一、引言 在计算机编程领域,特别是对于像C++这样的强类型语言来说,理解指针是非常重要的。指针是一种特殊的数据类型,它存储的是其他数据的内存地址。掌握指针的使用不仅能够帮助...

    句柄和指针的区别

    #### 五、指针与句柄的区别 1. **直接性**:指针直接指向内存地址,而句柄则通过一个映射表间接指向内存地址。 2. **安全性**:句柄提供了更高的安全性,因为即使句柄泄露也不会直接暴露实际的内存地址。 3. **可...

    C++典型句柄类的实现

    在C++编程中,句柄类是一种常见的设计模式,它用于封装对底层资源(如对象指针)的访问,提供安全、高效的管理机制。本文将深入探讨如何实现典型的句柄类,特别是在继承和多态环境下的应用。我们将讨论两种常用的...

    内存句柄与指针的区别.pdf

    内存句柄和指针在计算机编程中都是用来访问和操作内存中的对象的工具,但它们在使用和功能上有显著的区别。在Windows编程中,这两者尤其常见。 首先,内存句柄是一个由操作系统分配的唯一标识符,用于识别特定的...

    MFC句柄、指针总结(转)

    - `GetDocument()`:在视图类中,获取与该视图关联的文档对象的指针。 - `GetActiveView()`:在`CMainFrame`中获取当前活动视图的指针。 - `GetFirstViewPosition()`和`GetNextView()`:在文档类中,获取所有视图...

    C++实现句柄类

    以下是一个简单的C++句柄类实现示例: ```cpp class Resource { public: // 实际资源的构造和析构 Resource() { /* 初始化资源 */ } ~Resource() { /* 销毁资源 */ } private: // 防止复制和赋值 Resource...

    MFC获得各类指针,句柄的方法

    - `GetActiveWindow`: 获取与调用线程消息队列相关的活动窗口的句柄。 ```cpp HWND hWndActive = GetActiveWindow(); ``` 3. **安全获取窗口句柄** - `GetSafeHwnd`: 获取某个窗口对象指针的句柄。 ```cpp ...

    易语言窗口组件到指针,指针到窗口组件

    2. 指针:指针是C/C++等低级语言中的一个重要概念,在易语言中也有使用。它是一个变量,存储了内存地址,可以用来间接访问存储在特定内存位置的数据。在易语言中,指针通常用于处理底层数据和内存操作,提高程序的...

    详解C++句柄类

    与代理类不同的是,句柄类不会创建一个新的对象,而是将对象的所有权交给调用者。 二、句柄类的实现 在实现句柄类时,我们需要定义一个类,该类拥有一个指针成员变量,用于指向对象的所有权。例如,下面是一个简单...

    mfc类之间的指针句柄转换.doc

    在这个框架下,句柄(Handle)和指针是两种常见的数据类型,分别用于标识Windows对象和C++对象。下面我们将深入探讨MFC中句柄与指针之间的转换,以及它们在不同类之间如何交互。 1. **句柄与指针的概念** - 句柄是...

    C++ 智能指针深入解析

    C++中的智能指针是一种自动管理内存的对象,它们充当原始指针的角色,但同时也负责对象的生命周期管理,以防止内存泄漏和垂悬指针的问题。智能指针的出现主要是为了弥补C++中手动内存管理的缺陷,它借鉴了Java等语言...

    MFC中 各类的指针和句柄的获取方法

    指针在C++中是一个变量,它存储了另一个变量的地址,而在MFC中,类的指针通常用来指向类的对象。句柄则是操作系统用来标识和访问系统资源的一种机制,如窗口、菜单、控件等。 **MFC中获取常见类句柄** 1. **应用...

    通过进程ID找到窗口句柄.

    在计算机编程领域中,有时我们需要与操作系统进行更深层次的交互,例如:为了自动化测试、系统监控或是其他高级应用的目的,我们需要通过进程ID(Process ID, PID)来查找特定窗口的句柄(Handle)。这涉及到对...

    C++智能指针(1).pdf

    RAII是一种编程范式,由C++的创始人Bjarne Stroustrup提出,它的核心思想是在对象构造时获取资源(如内存、文件句柄等),并在对象析构时释放这些资源。这样,一旦对象超出其作用域,相关的资源就会自动释放,减少了...

    c++笔记之句柄类

    句柄类存储和管理基类指针。指针所指的对象的类型可以变化,即可以指向基类对戏那个又可以指向派生类类型对象。用户通过句柄类访问继承层次的操纵。因为句柄类使用指针执行操作,虚成员的行为将在运行时根据句柄实际...

    如何获得窗口句柄

    此方法根据鼠标指针的位置来获取当前鼠标所在窗口的句柄。这对于调试或者用户交互非常有用。 **函数原型:** ```c++ HWND WindowFromPoint(POINT& Point); ``` **参数说明:** - `Point`: 包含屏幕坐标点的...

Global site tag (gtag.js) - Google Analytics