如何给分配的内存赋值?
PBuffer :=AllocMem(1024);//这里分配1024,看任务管理器,并没有1024这么大,是不是虽然分配了,但是没有利用,就不会用这么大?
PBuffer,如何给这个针数据赋值呢?比如在它的数据头赋值个Boolean型,然后紧跟其后赋值个integer? 最后可以读出这两个值。
[解决办法]
第一个问题,牵涉2个方面,第一Windows并不是你一申请就马上给你分配内存,而是使用申请的内存才真实的分配(又叫映射,这要看Windows版本,Vista后是这样,XP的情况没作测试)
这个可以用如下代码验证:
- Delphi(Pascal) code
var P : Pointer;//当点了Button1后,程序占用的内存并未增加procedure TForm1.Button1Click(Sender: TObject);begin GetMem(P , 50 * 1024 * 1024);end;//当使用这片内存时,内存就真实的从Winows分配物理内存并映射了//点了Button2后,程序使用内存增加了大概50Mprocedure TForm1.Button2Click(Sender: TObject);begin FillChar(P^ , 50*1024*1024 , 0);end;//释放procedure TForm1.Button3Click(Sender: TObject);begin FreeMem(P);end;