小虾我这几天看一个大虾前辈写的程序,发现句柄到处都是(是他自己定义的句柄)。
比如,他把一个CDrawing类的 对象(定义在DLL中)的句柄在这个对象内和对象外(比如说在CDrawDoc类的对象中)大用一气。他为什么不像小虾似的用个指针不指来指去不就行了?他还要用个转换函数把句柄转换成指针或相反的过程。为什么呢?哪位大虾知道他这么做的意图是什么呢?安全?高效?还是其他的什么?我现在不理解句柄存在的价值!
比如,他把一个CDrawing类的 对象(定义在DLL中)的句柄在这个对象内和对象外(比如说在CDrawDoc类的对象中)大用一气。他为什么不像小虾似的用个指针不指来指去不就行了?他还要用个转换函数把句柄转换成指针或相反的过程。为什么呢?哪位大虾知道他这么做的意图是什么呢?安全?高效?还是其他的什么?我现在不理解句柄存在的价值!
据我所知,指针可以直接用于对内存的操作,提供句柄是因为句柄较指针为安全,它不直接对内存操作,如果需要操作内存,就可以通过句柄来得到指针然后do sth. you want to do.
分太少. 不想说了.............................................
....................^_^
关于ID号,句柄和指针:
ID号可以指向多个资源,但这些资源一般都在硬盘上面存放。当一个资源被调入内存的时候,就会又一个句柄指向它,但是句柄和被调入内存的资源必须是一对一的关系。
句柄知道被调入的资源的大小,也就是所分配内存的大小。而指针只是指向地址,他并不知道也不关心所指向的内存的大小。
如有不同建议,希望多多交流!!!