获取打开的记事本中的内容 - 回复 "ymg1103" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2008/11/15/1334237.html#1784570
阅读全文
posted @
2010-03-23 10:44
万一
阅读(4738)
推荐(1) 编辑
Delphi 的内存操作函数(6): 跨进程的内存分配
摘要:Delphi 为我们提供了三个方便的函数: GlobalAllocPtr {简化自 API 的 GlobalAlloc} GlobalReAllocPtr {简化自 API 的 GlobalReAlloc} GlobalFreePtr {简化自 API 的 GlobalFree} 读写本程序以外的数据时可以使用它们, 很方便, 譬如: p := GlobalAllocPtr(0...
阅读全文
posted @
2008-11-15 18:50
万一
阅读(8486)
推荐(1) 编辑
Delphi 的内存操作函数(5): 复制内存
摘要:MoveMemory、CopyMemory 的功能类似, 都是复制内存, 都是调用 Move 过程;MoveMemory、CopyMemory 操作指针; Move 操作实体.还要注意, 它们的参数位置不一样!举例:{例1}var buf1,buf2: array[0..9] of AnsiChar;begin buf1 := '0123456789'; buf2 := 'abcdefghij'; Move(buf2[2], buf1[4], 5); ShowMessage(buf1); {0123cdefg9} ShowMessage(buf2); {abcd
阅读全文
posted @
2008-11-14 12:59
万一
阅读(20883)
推荐(0) 编辑
Delphi 的内存操作函数(4): 清空与填充内存
摘要:FillMemory、ZeroMemory 一目了然的两个函数, 但其实它们都是调用了 FillChar; 清空不过就是填充空字符(#0: 编号为 0 的字符), 说来说去是一回事. 为了下面的测试, 先写一个以十六进制方式查看内存的函数: function GetMemBytes(var X; size: Integer): string; var pb: PByte; i: I...
阅读全文
posted @
2008-11-14 11:44
万一
阅读(15967)
推荐(0) 编辑
Delphi 的内存操作函数(3): 给结构体指针分配内存
摘要:使用结构或结构数组, 一般是不需要主动分配内存的, 譬如: var pts: TPoint; begin pts.X := 1; pts.Y := 2; ShowMessageFmt('%d,%d', [pts.X, pts.Y]); {1,2} end; //结构数组: var Arr: array[0..2] of TPoint; i: Integer; begin...
阅读全文
posted @
2008-11-10 14:50
万一
阅读(10742)
推荐(0) 编辑
Delphi 的内存操作函数(2): 给数组指针分配内存
摘要:静态数组, 在声明时就分配好内存了, 譬如: var arr1: array[0..255] of Char; arr2: array[0..255] of Integer; begin ShowMessageFmt('数组大小分别是: %d、%d', [SizeOf(arr1), SizeOf(arr2)]); {数组大小分别是: 512、1024} end; 对静态...
阅读全文
posted @
2008-11-10 11:04
万一
阅读(14017)
推荐(1) 编辑
Delphi 的内存操作函数(1): 给字符指针分配内存
摘要:马上能想到的函数有: GetMem AllocMem ReallocMem FreeMem GetMemory ReallocMemory FreeMemory New Dispose NewStr DisposeStr StrNew StrAlloc StrDispose GlobalAllocPtr GlobalFreePtr WideStrAlloc AnsiStrAlloc ...
阅读全文
posted @
2008-11-08 12:14
万一
阅读(22011)
推荐(2) 编辑
内存管理[6]
摘要:本例效果图: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2:...
阅读全文
posted @
2008-05-13 16:57
万一
阅读(6530)
推荐(1) 编辑
内存管理[5]
摘要:本例在建立一个新的堆前后分别通过 GetProcessHeaps 函数获取了当前进程的堆句柄列表, 没想到一个最简单的程序也有 5 个堆. 效果图: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtr...
阅读全文
posted @
2008-05-09 19:12
万一
阅读(5743)
推荐(2) 编辑
内存管理[4]
摘要:一个使用私有堆的例子: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; proc...
阅读全文
posted @
2008-05-09 15:22
万一
阅读(6570)
推荐(1) 编辑
内存管理[3]
摘要:VirtualAlloc 分配的内存是以 4K 为最小单位、连续的内存地址(但映射到真实的内存时它不一定是连续的), 前面说了, 它不适合分配小内存(譬如只有几个字节的变量); 局部的变量在 "栈" 中有程序自动管理, 那么那些全局的小变量怎么办呢? 这就要用到 "堆". 这样看来, VirtualAlloc 分配的内存既不是 "栈" 也不是 "堆"; VirtualAlloc 分配的内存地址是...
阅读全文
posted @
2008-05-08 17:22
万一
阅读(7758)
推荐(1) 编辑
内存管理[2]
摘要:系统给程序的地址数是 4G, 为什么不是 3G 或 5G? 因为 32 位的指针的最大值就是 $FFFFFFFF, 它不能表示更多了, 究其根源这要回到 CPU 的寻址能力、地址总线等等.在 Win64 下, 系统给程序的地址数达到了 16EB(0 - $FFFFFFFFFFFFFFFF), 也就是 18446744073709551616 个. 不过 Win64 还没有普及, 我们还得回到实际的...
阅读全文
posted @
2008-05-06 15:11
万一
阅读(8667)
推荐(0) 编辑
内存管理[1]
摘要:Windows 是多任务的操作系统, 一个任务就是一个应用(应用程序)、一个应用占一个进程; 在一个进程里面, 又可以运行多个线程(所以就有了很多"多线程编程"的话题).对 Win32 来讲, 系统给每个进程 4GB 的地址空间:低端 2GB($00000000 - $7FFFFFFF) 给用户支配;高端 2GB($80000000 - $FFFFFFFF) 留给系统使用.文件或程序要调入内存才能...
阅读全文
posted @
2008-05-06 12:00
万一
阅读(12986)
推荐(2) 编辑
开始学习内存管理
摘要:这是可能需要的函数: System.AllocMem; System.AllocMemCount; System.AllocMemSize; System.Dispose; System.Finalize; System.FreeMem; System.FreeMemory; System.GetHeapStatus; System.GetMem; System.GetMemory; Syste...
阅读全文
posted @
2008-05-04 13:06
万一
阅读(10743)
推荐(0) 编辑