小虾我这几天看一个大虾前辈写的程序,发现句柄到处都是(是他自己定义的句柄)。
比如,他把一个CDrawing类的 对象(定义在DLL中)的句柄在这个对象内和对象外(比如说在CDrawDoc类的对象中)大用一气。他为什么不像小虾似的用个指针不指来指去不就行了?他还要用个转换函数把句柄转换成指针或相反的过程。为什么呢?哪位大虾知道他这么做的意图是什么呢?安全?高效?还是其他的什么?我现在不理解句柄存在的价值!

解决方案 »

  1.   

    我是菜鸟,刚学VC,希望大家能帮助我,
    据我所知,指针可以直接用于对内存的操作,提供句柄是因为句柄较指针为安全,它不直接对内存操作,如果需要操作内存,就可以通过句柄来得到指针然后do sth. you want to do.
      

  2.   

    主要是考虑到windows的内存管理机制. 在一些情况下会移动内存块。 
    分太少. 不想说了.............................................
    ....................^_^
      

  3.   

    这个问题在1年前就争论过!!!你可以看看句柄的定义,就会知道它的本质就是一个指针。
    关于ID号,句柄和指针:
       ID号可以指向多个资源,但这些资源一般都在硬盘上面存放。当一个资源被调入内存的时候,就会又一个句柄指向它,但是句柄和被调入内存的资源必须是一对一的关系。
       句柄知道被调入的资源的大小,也就是所分配内存的大小。而指针只是指向地址,他并不知道也不关心所指向的内存的大小。
       如有不同建议,希望多多交流!!!