漩涡鸣人 发表于 2014-9-18 23:38:56

C标准库之内存操作函数——_heapwalk

功能:_heapwalk函数用于扫描获得堆下一个项目信息
函数原型:int _heapwalk (_HEAPINFO * entryinfo);
参数:
参数说明
entryinfo_HEAPINFO结构指针,指向堆信息结构
--注:VC中该结构体成员含义如下:_useflag成员: _FREEENTRY表示该项目已被用,_USEDENTRY表示未被使用_size成员:该项目大小_pentry成员:该项目入口(作为这个函数开始扫描的地址)
返回值:成功返回状态常量值,否则把全局变量errno设置为ENOSYS--注:VC中常量值含义如下:堆空                  ——-1堆正常               ——-2堆错误开始                   ——-3堆坏节点             ——-4堆结束               ——-5堆坏点               ——-6

要求:
函数需要的头文件
_heapwalk<malloc.h>

举例:#include <stdio.h>
#include <malloc.h>

int main(void)
{
    _HEAPINFO hinfo;
    hinfo._pentry = NULL;//从起始地址开始查询

    while(_HEAPOK == _heapwalk(&hinfo))//如果堆正常
    {
      if(_USEDENTRY == hinfo._useflag)//已被使用
      {
            printf("已被使用\n");
      }
      else
      {
            printf("未被使用\n");
      }
      printf("堆入口为:%08X 堆大小为%d字节\n\n", hinfo._pentry, hinfo._size);
    }
    return 0;
}
运行效果:

Angel丶L 发表于 2014-9-19 01:18:05

不错支持下。
页: [1]
查看完整版本: C标准库之内存操作函数——_heapwalk