C++ 查询HeapSetInformation()win 32 api
在经历了这个过程之后,我无法理解使用这个api的目的 我正在代码中使用下面的调用C++ 查询HeapSetInformation()win 32 api,c++,winapi,C++,Winapi,在经历了这个过程之后,我无法理解使用这个api的目的 我正在代码中使用下面的调用 ULONG heapInfo = 2 ; HeapSetInformation( GetProcessHeap(),HeapCompatibilityInformation,&heapInfo, sizeof( heapInfo ) ) 根据secondarg,上面的链接说:启用堆特性。仅支持低碎片堆(LFH)。但是,应用程序不必启用LFH,因为系统根据需要使用LFH来服务内存分配请求 我的问题: 1)
ULONG heapInfo = 2 ;
HeapSetInformation( GetProcessHeap(),HeapCompatibilityInformation,&heapInfo, sizeof( heapInfo ) )
根据secondarg,上面的链接说:启用堆特性。仅支持低碎片堆(LFH)。但是,应用程序不必启用LFH,因为系统根据需要使用LFH来服务内存分配请求
我的问题:
1)
您能否帮助我理解此api
HeapSetInformation
()的含义以及此api中第二个参数(HeapCompatibilityInformation
)的用途?我无法理解LFH在这里的含义。这些是MS平台上提供的非常低级的内存管理API。您不应该尝试使用这些API,除非它是绝对必要的,我们完全理解这一点
现在,关于你的问题:
此api HeapSetInformation()的含义是什么
这将启用指定堆的功能。现在,每个进程都保持堆段的数量。其中一个称为默认堆段GetProcessHeap()API返回该默认堆段的句柄。该特性将由该API的第二个参数决定
此API中第二个参数(HeapCompatibilityInformation)的用途
这决定了可以将功能的类型设置为特定堆段。目前支持两种功能:
- HEAP兼容性信息
- 可处罚的终止腐败
API设置堆的属性。第二个属性标识要设置的属性 您正在讨论的属性是是否使用低碎片堆。在Vista和更高版本上,仅此而已,因此该属性没有影响。在XP上,此属性可用于请求低碎片堆
这里描述了低碎片堆:machien环境是windows 2003,20082008是vista的服务器版本。所以只有lfh在那里。2003年是XP的时间框架。因此,这种设置会产生影响。如文档中所述。