首页 > 代码库 > 浅析Windows环境下堆表的空闲双向链表结构
浅析Windows环境下堆表的空闲双向链表结构
- 实验环境:
- 操作系统: Windows 2000 Service Pack 4
- 集成开发环境: Microsoft Visual C++ 6.0 SP6
- 实验代码如下:
-
1 #include <windows.h> 2 #include <stdio.h> 3 4 int main(int argc, char **argv) 5 { 6 HLOCAL h1, h2, h3, h4, h5, h6; 7 HANDLE hp; 8 hp = HeapCreate(0, 0x1000, 0x10000); 9 10 // 为了方便显示堆的地址,这里把它打印出来 11 printf("Heap address: %p\n", hp); 12 13 // 为了避免程序监测出调试器而是使用调试堆管理策略 14 __asm int 3 15 16 h1 = HeapAlloc(hp, HEAP_ZERO_MEMORY, 3); 17 printf("h1: %p\n", h1); 18 h2 = HeapAlloc(hp, HEAP_ZERO_MEMORY, 5); 19 printf("h2: %p\n", h2); 20 h3 = HeapAlloc(hp, HEAP_ZERO_MEMORY, 6); 21 printf("h3: %p\n", h3); 22 h4 = HeapAlloc(hp, HEAP_ZERO_MEMORY, 8); 23 printf("h4: %p\n", h4); 24 h5 = HeapAlloc(hp, HEAP_ZERO_MEMORY, 19); 25 printf("h5: %p\n", h5); 26 h6 = HeapAlloc(hp, HEAP_ZERO_MEMORY, 24); 27 printf("h6: %p\n", h6); 28 29 HeapFree(hp,0, h1); 30 HeapFree(hp,0, h3); 31 HeapFree(hp,0, h5); 32 33 HeapFree(hp, 0, h4); 34 35 return 0; 36 }
- 根据
浅析Windows环境下堆表的空闲双向链表结构
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。