内存句柄与指针的区别

原创 2007年09月27日 13:35:00
问题: 请专家详细介绍一下内存句柄与指针的区别。 

    
     指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。Windows并不希望一般程序修改其内部数据结构,因为这样太不安全。所以Windows给每个使用GlobalAlloc等函数声明的内存区域指定一个句柄(本质上仍是一个指针,但不要直接操作它),平时你只是在调用API函数时利用这个句柄来说明要操作哪段内存。当你需要对某个内存进行直接操作时,可以使用GlobalLock锁住这段内存并获得指针来直接进行操作。
    
    lshgao的意见:
    句柄是指针的“指针”,使用句柄主要是为了利于windows在进程内存地址空间移动分配的内存块,以防止进程的内存空间被撕的四分五裂而存在过多的碎片。
    
    阿城的意见:
    句柄是一些表的索引也就是指向指针的指针。间接的引用对象,windows可以修改对象的"物理"地址和
    描述器的值,但是句柄的值是不变的。
    
    刘志用的意见:
    句柄和指针都是地址,不同在于:
    1,句柄所指的可以是一个很复杂的结构,并且很有可以是与系统有关的,比如说上面所说的线程的句柄,它指向的就是一个很类或者结构,他和系统有很密切的关系,当一个线程由于不可预料的原因,而终止时在系统就可以回它所占用的资料,如CPU,内存等等,反过来想可以知道,这个句柄中的某一些项,是与系统进行交互的。由于Windows系统,是一个多任务的系统,它随时都可能要分配内存,回收内存,重组内存。
    2,指针它也可以指向一个复杂的结构,但是通常是用户定义的,所以的必需的工作都要用户完成,特别是在删除的时候。
    但在VC++6.0中也有一些指针,它们都是处理一些小问题才用的,如最常见的字符的指针,它也是要用户处理的如果你动态分配了内存;但是Cstring就不要用户处理了,它其实是VC++中的一个类,所以的操作都由成员函数完成,产生(分配)由构造函数,删除(回收)由析构函数完成。
    
    相关问题:
    QA000194 "怎样对经调用API函数GlobalAlloc及GlobalLock得到的内存块进行读写操作"
    
    zjf问:
    你好,我在学习用vc++6.0编译多线程程序中遇到了很多句柄,但是不明白他的具体作用以及如何使用句柄,希望您能给我举几个具体实例,不甚感激!
    比如说: HANDLE hThread,它是怎样具体使用的?
    答:你使用CreateThead后函数会返回一个句柄,它代表这个线程。你可能会调用SetThreadPriority去修改线程的优先级,使用ResumeThread去重新开始一个线程的运行,在调用这些函数时你都需要告诉系统你到底要操作哪个线程,而刚才返回的句柄派上用处了,这些函数的第一个参数就是线程的句柄。

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

内存句柄与指针的区别 .

问题: 请专家详细介绍一下内存句柄与指针的区别。            指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。Windows并不希望一般程序修改其内部数据结构,因为这...

iOS 【NSURLSession 下载文件(解决内存飙升/句柄指针/离线断点续传)】

NSURLSession发请求下载文件(代理) 解决内存飙升问题 实现下载的断点续传

VC++自释放指针、自释放虚拟内存、自关闭句柄、局部作用域回调函数调用等辅助开发类

VC++自释放指针、自释放虚拟内存、自关闭句柄、局部作用域回调函数调用等辅助开发类

句柄与指针的区别(一)

句柄其实就是指针,但是他和指针最大的不同是:给你一个指针,你可以通过这个指针做任何事情,也许是好事,也许是通过这个指针破坏内存,干一些捣乱的事情。这个我想大家都会碰到过,因为乱用指针导致程序崩溃 句...

句柄和指针的区别

**句柄实际上是一种指向某种资源的指针,但与指针又有所不同:指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。Windows并不希望一般程序修改其内部数据结构,因为这样太不安全。所以...

窗口指针 和 窗口句柄 有什么区别

句柄是指针的“指针” 指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。Windows并不希望一般程序修改其内部数据结构,因为这样太不安全。所以Windows给每个使用Globa...

句柄与指针的区别(二)

句柄vs指针  句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知 这个内存的首地址,那么就可以随时用这...

指针和句柄的区别

句柄是不同于指针的,但是实际上的操作有相同的地方。创建一个窗体,或者创建DC、BITMAP……都会有相应的句柄产生。那么这些对象销毁的时候,他们对应的句柄也就失效了。或者说可以通过他们的句柄来销毁这些...

句柄和指针的区别(php资源类型)

群里有人问,你这个博客叫  lnmp,是专注于php的,为啥要有这篇文章了?我们知道在php中,至少在编码时,programmer是不会显实的去操作指针的,更何况句柄,有的人甚至都不知句柄为何物?我给...

句柄与指针的区别(二)

句柄vs指针 句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知 这个内存的首地址,那么就可以随时用这个地...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)