内存管理
0赞
发表于 1/16/2010 11:29:43 AM
阅读(1753)
GLOBALHANDLE hMemoryHandle = GlobalAlloc(GMEM_MOVEABLE, 2048);
GLOBALHANDLE hMemoryHandle = GlobalAlloc(GHND, 2048)
用上述两个函数分配内存时,返回的只是一个句柄,而不是指针.为了得到指针,必须首先在内存中锁定块,使内存块暂时固定,不可移动.这项工作可以由GlobalLock()函数来完成.
其函数原型为: LPVOID GlobalLock(GLBALHANDLE hmem);
函数的唯一参数是要锁定的内存块的句柄,函数的调用如下:
int *p = (int *)GlobalLock(hMem Handle);
在获得了固定内存块的指针之后,就可以对内存块进行操作了.当然,在完成对内存的访问之后,还要用GlobalUnlock()函数来解除锁定;否则,申请可移动内存也就变得无意义了,因为得到的仍将是固定内存.移动的使用方法如下:
BOOL GlobalUnlock(hMemHandle);
在对已分配的内存块的操作全部结束之后,还要记住将内存块释放掉,这项工作可以由GlobalFree()函数来完成.该函数的原型为:
GlobalFree(hMemHandle);
