[内存管理(2)] 创建和销毁堆实例[TZZ]
1、打开VS2017,新建一个名为“MemoryMgtDemo2”的“Windows控制台应用程序”项目(详细步骤请参考引用文章);
2、在VS2017打开的“MemoryMgtDemo2.cpp”文件中,添加“查询默认岜躲怡镌堆信息”的测试代码,然后调试运行程序。在新添加的代码中,通过HeapQueryInformatica函数查询调用进程默认堆上的兼容信息(即HeapCompatibilityInformation类别,返回结果保存到ULONG变量中),然后根据查询结果打印对应的中文提示信息(详情请参考HeapQueryInformation函数的MSDN说明);
![[内存管理(2)] 创建和销毁堆实例[TZZ]](https://exp-picture.cdn.bcebos.com/6a408cdd3340b6f319ef9da912c0affce086eefd.jpg)
4、关闭控制台窗口返回到“MemoryMgtDemo2.cpp”文件中。为了方便输出堆实例的信息,可以将打印堆信息的代码放入一个独立定义的函数“tx_print_heap_info”中。以后需要输出堆信息时,只需要调用此函数即可;
![[内存管理(2)] 创建和销毁堆实例[TZZ]](https://exp-picture.cdn.bcebos.com/3201a8f39187031c13a831496a86242fa972ecfd.jpg)
6、在弹出的控制台窗口中,可以见到“将默认堆设置为标准堆失败…”的字样。在Win7系统中,默认情况下所有堆(无论是默认堆,还是通过HeapCreate创建的堆)都是LFH,并且禁止程序修改。有意思的是,你可以通过HeapSetInformation函数将一个LFH设置为LFH(即该函数会调用成功);
![[内存管理(2)] 创建和销毁堆实例[TZZ]](https://exp-picture.cdn.bcebos.com/90c61d1c99c0affc6deeba9a2372941fbfe4eafd.jpg)
8、在弹出的控制台窗口中,可以确认默认大小的堆创建成功;
![[内存管理(2)] 创建和销毁堆实例[TZZ]](https://exp-picture.cdn.bcebos.com/9881b1fce186242f261a0aaa35e434daf15ee8fd.jpg)
10、在弹出的控制台窗口中,可以见到固定大小的堆实例创建成功的输出信息;
![[内存管理(2)] 创建和销毁堆实例[TZZ]](https://exp-picture.cdn.bcebos.com/562787cf02532f6339ec7e83699147e832e05cc2.jpg)
![[内存管理(2)] 创建和销毁堆实例[TZZ]](https://exp-picture.cdn.bcebos.com/031231632385e036fef8d95db8e039723c035ac2.jpg)
12、至此,创建和销毁堆实例的测试代码就介绍完毕了。在使用中务必记得HeapCreate函数和HeapDestroy函数应当成对出现,防止堆实例因为未销毁而出现内存泄漏。Enjoy!
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:50
阅读量:35
阅读量:38
阅读量:44
阅读量:68