小记——LocalFree与指针

功能
2函数原型
3参数
4返回值
5说明
6使用条件
Windows API
1功能
编辑

释放局部内存对象并使句柄失效
2函数原型
编辑

HLOCAL LocalFree ( HLOCAL hMem);
3参数
编辑

hMem:局部内存对象的句柄,通过函数LocalAlloc或LocalReAlloc返回的。
4返回值
编辑

函数执行成功返回NULL,否则返回内存对象的句柄,要获得详细错误信息,调用GetLastError函数。
5说明
编辑

内存被释放后再访问会出现EXCEPTION_ACCESS_VIOLATION异常
如果参数为NULL,则LocalFree忽略参数并返回NULL
锁定的内存(LocalLock)也能被释放。
6使用条件
编辑

OS版本:Windows CE 1.0或更新
头文件:Winbase.h
链接库:Coredll.lib
今天读《Windows核心编程》遇到了HLOCAL这个变量,
在WinDef.h中发现
typedef HANDLE              HLOCAL;
在WinNt.h中发现
typedef void *HANDLE;
原来HANDLE和HLOCAL就是void*。
MSDN上的解释为:Handle to a local memory block. 直译是:一个局部的内存块。额,看typedef的这些定义,发现就是指向一块内存区域的指针。
#include "stdafx.h"
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
HLOCAL h = NULL;
int *a = (int*)malloc(sizeof(int));

h = a;
*a = 3;

printf("%d %d/n",a,h);
return 0;
}
LPVOID是一个没有类型的指针,也就是说你可以将任意类型的指针赋值给LPVOID类型的变量(一般作为参数传递),然后在使用的时候再转换回来。
可以将其理解为long型的指针,指向void型。
原文地址:https://www.cnblogs.com/jiaoluo/p/3524191.html