HGLOBAL 这个是windows 定义的数据类型。
这是个句柄,标示一个内存区,不是指针。在对内存区的操作中,一般用指针,从这个handle可以得到指针,然后就可以对内存区进行操作了。 -------------------------------------------------- eg: 开一个200byte的内存区,在里面赋值 HGLOBAL hMemHandle=::GlobalAlloc(GHND,50*sizeof(int)); //得到handle int *p=(int *)::GlobalLock(hMemHandle); //从handle得到指针 for(int k=0;k<50;k++) *(p+k)=k; char s[128]; sprintf(s,"testing:p[49]=%i",p[49]); ::GlobalUnlock(hMemHandle); // ::GlobalFree(p); AfxMessageBox(s);
开辟一个新的内存区域,用一指针指向此地址区域,通过指针完成对内存区域的操作。记住用指针指向的时候要 ::GlobalLock(), 操作完成后,::GlobalUnlock()此内存区域的句柄,然后,::GlobalFree()掉此指针。
|