zoukankan      html  css  js  c++  java
  • 小记——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型。
  • 相关阅读:
    86. Partition List
    2. Add Two Numbers
    55. Jump Game
    70. Climbing Stairs
    53. Maximum Subarray
    64. Minimum Path Sum
    122. Best Time to Buy and Sell Stock II
    以场景为中心的产品设计方法
    那些产品经理犯过最大的错
    Axure教程:如何使用动态面板?动态面板功能详解
  • 原文地址:https://www.cnblogs.com/jiaoluo/p/3524191.html
Copyright © 2011-2022 走看看