随笔分类 -  Delphi7 内存篇

摘要:本例在建立一个新的堆前后分别通过 GetProcessHeaps 函数获取了当前进程的堆句柄列表,效果图:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For... 阅读全文
posted @ 2014-10-22 18:21 Delphi爱好者2014 阅读(417) 评论(0) 推荐(0)
摘要:一个使用私有堆的例子:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = clas... 阅读全文
posted @ 2014-10-21 09:48 Delphi爱好者2014 阅读(442) 评论(0) 推荐(0)
摘要:VirtualAlloc 分配的内存是以 4K 为最小单位、连续的内存地址(但映射到真实的内存时它不一定是连续的), 前面说了, 它不适合分配小内存(譬如只有几个字节的变量); 局部的变量在 "栈" 中有程序自动管理, 那么那些全局的小变量怎么办呢? 这就要用到 "堆".这样看来, Virtua... 阅读全文
posted @ 2014-10-19 11:27 Delphi爱好者2014 阅读(1105) 评论(0) 推荐(0)
摘要:系统给程序的地址数是 4G, 为什么不是 3G 或 5G? 因为 32 位的指针的最大值就是 $FFFFFFFF, 它不能表示更多了, 究其根源这要回到 CPU 的寻址能力、地址总线等等.在 Win64 下, 系统给程序的地址数达到了 16EB(0 - $FFFFFFFFFFFFFFFF), 也... 阅读全文
posted @ 2014-10-18 15:46 Delphi爱好者2014 阅读(752) 评论(0) 推荐(0)
摘要:Windows 是多任务的操作系统, 一个任务就是一个应用(应用程序)、一个应用占一个进程; 在一个进程里面, 又可以运行多个线程(所以就有了很多"多线程编程"的话题). 对 Win32 来讲, 系统给每个进程 4GB 的地址空间: 低端 2GB($00000000 - $7FFFFFFF)... 阅读全文
posted @ 2014-10-17 16:00 Delphi爱好者2014 阅读(1108) 评论(0) 推荐(0)