我有很多内存分配和相同数量的FreeMem调用。我没有的是在调用freemem之前检查指针是否为nil,以及在释放后将指针设置为nil的一行。我尝试创建一个函数来执行此操作procedureFreeMemAndNil(p:Pointer;size:Integer=-1);beginifpnilthenbeginifsize>-1thenFreeMem(p,size)elseFreeMem(p);p:=nil;end;end;但是有一个问题。它不能将原始指针设置为nil,因为参数不是变量(varp:指针)。但我不能使用var因为如果我这样做编译器会提示类型必须是完全相同的类型(指针)。我
我有很多内存分配和相同数量的FreeMem调用。我没有的是在调用freemem之前检查指针是否为nil,以及在释放后将指针设置为nil的一行。我尝试创建一个函数来执行此操作procedureFreeMemAndNil(p:Pointer;size:Integer=-1);beginifpnilthenbeginifsize>-1thenFreeMem(p,size)elseFreeMem(p);p:=nil;end;end;但是有一个问题。它不能将原始指针设置为nil,因为参数不是变量(varp:指针)。但我不能使用var因为如果我这样做编译器会提示类型必须是完全相同的类型(指针)。我
我使用AllocMem/GetMem/New例程分配内存,然后使用FreeMem/Dispose例程释放内存。但是我发现(通过ProcessExplorer)进程的内存大小没有减少。如果我使用GlobalAllocPtr/HeapAlloc和GlobalFreePtr/HeapFreeAPI,内存大小会减少。这是我的测试代码:typeTMyRec=recordName:string;TickCount:Cardinal;Buf:array[0..1024-1]ofbyte;end;PMyRec=^TMyRec;varForm1:TForm1;implementation{$R*.dfm