`

Delphi New,Getmem,ReallocMem联系与区别

 
阅读更多

procedure New(var P: Pointer); {为一个指针变量分配内存,会自动计算指针所指数据结构需要空的空间大小}

procedure GetMem(var P: Pointer; Size: Integer); {分配一个指定大小的内存块(连续),并用P指向它}

procedure ReallocMem(var P: Pointer; Size: Integer); {重新分配指定大小内存块,参数P必须是nil或者指向一个由GetMem, AllocMem, 或 ReallocMem分配的内存变量,其分配的内存是连续的,会把前面已有的数据移到新分配的内存中去}

通常采用New分配内存比较好。

 

一、New和GetMem都可以为指针类型动态分配内存,并且Delphi不会对由此分配的内存进行管理,即必须有相应的代码对其进行释放,否则内存将“丢失”,直到应用程序结束。
二、New分配的内存必须由Dispose来释放;GetMem分配的内存必须由FreeMem来释放;
三、New根据指针类型来自动计算需要分配的内存尺寸;GetMem必须指定尺寸;

因此,对于类型指针,一般用New和Dispose来进行管理;对于内存尺寸随机的指针(典型地如PChar),一般用GetMem和FreeMem来进行管理。从另一方面来说,在很多时候用哪一对例程都可以进行动态内存管理。

分享到:
评论

相关推荐

    delphi内存分配完全总结

    delphi内存 内存分配 delphi内存的完全总结

    Delphi String类型和PChar类型使用的区别.rar

    Delphi 以实例演示String类型和PChar类型使用的区别,演示了PChar静态分配空间和PChar动态分配空间:  procedure TForm1.Button1Click(Sender: TObject);  var  PStr:array [0..100] of Char;  begin  StrPCopy...

    Delphi7 向XML中添加RTTI信息.rar

    Delphi7.0 向XML中添加RTTI信息,这个例子挺简单,希望大家喜欢,面向Delphi新手的,高手请绕道哦,下面是本例Delphi向XML中添加RTTI信息的关键性代码:  procedure TForm1.ComponentToDOM(iNode: IXmlNode; Comp: ...

    Delphi7.0 获取密码框中的密码.rar

    以下代码与此功能相关,敬请关注:  begin  L:=GetWindowTextLength(Edit1.handle);  GetMem(buffer,L 1);  SendMessage(Edit1.handle,WM_GETTEXT,L,integer(buffer));  label1.Caption:=String(buffer);  ...

    GetMemoryStatus.zip_GetMemoryStatus.cpp_GetMemoryStatus.h_getmem

    使用系统函数GlobalMemoryStatus()和数据结构MEMORYSTATUS查看系统内存和虚拟存储空间使用情况,使用VirtualAlloc()函数和VirtualFree()函数分配和释放虚拟内存空间。

    Delphi清理Windows临时文件的例子及源码.rar

    Delphi清理Windows临时文件的例子及源码,这里的临时文件主要是Internet Explorer上网时产生的垃圾文件,上传源码前测试了一下,Windows7下还真清理成功了。不过清理过程中,窗口会假死一阵子,可能程序忙,不过也...

    一个关于Delphi中ErrorProc处理的实例程序

    摘要:Delphi源码,其它类别,ErrorProc  本示例是一个技巧,用于使ErrorProc处理完后退回到错误发生点之后。  输出结果是类似这样的:  ______________________________________________________  Code: 1 Addr...

    获取windows System目录路径-Delphi示例.rar

    Delphi获取windows System目录路径,这个比较简单,觉得没啥用,只是可以练习一下GetSystemDirectory函数如何使用,下面分享出核心的代码,完整代码需要您下载哦:  begin  GetMem(SysDir,255);  ...

    Delphi枚举网络工作组及共享信息.rar

    Delphi枚举网络工作组及共享信息,获取到所在网络中的所有工作组信息,并检测是否有可以用的共享资源信息,部分代码注解://WNetCloseEnum关闭一个列举句柄  Res:= WNetCloseEnum(lphEnum);  //关闭一次列举  ...

    Delphi简体转繁体—繁体转简体

    GetMem(pGBCHSChar, Len * 2 + 1); ZeroMemory(pGBCHSChar, Len * 2 + 1); //GB CHS -> GB CHT LCMapString($804, LCMAP_SIMPLIFIED_CHINESE, pGBCHTChar, -1, pGBCHSChar, Len * 2); result := string...

    delphi 隐藏字符*的获取

    GetMem(buffer,L+1);//分配内存空间,注意加1,因为ASCII码以"\0"结尾 SendMessage(Edit1.Handle,WM_GETTEXT,L+1,Integer(buffer)); Label2.Caption:=string(buffer);//显示 FreeMem(buffer);//释放内存 end; ...

    RecordArray:Delphi 类型指针变得简单

    Delphi 类型指针变得简单。 它是什么? 它是一个用于在运行时创建某种类型数组的小单元,忘记GetMem()和FreeMem()并try..finally块。 通常当需要使用数组作为指针时,我们必须使用GetMem()或alloc()通过指定元素的...

    delphi代码参考

    new(sver); p:= pchar(sver); GetMem(buf, i); ZeroMemory(buf, i); if GetFileVersionInfo(pchar(FileName), 0, 4096, pointer(buf)) then if VerQueryValue(buf, '\', pointer(sver), i) then begin ma:=...

    Python库 | getmem-1.0-py3-none-any.whl

    python库,解压后可用。 资源全名:getmem-1.0-py3-none-any.whl

    PyPI 官网下载 | getmem-1.0-py3-none-any.whl

    资源来自pypi官网。 资源全名:getmem-1.0-py3-none-any.whl

    delphi获得电脑登陆名

    Getmem(UserName ,255); Size:=255; if Windows.GetUserName(UserName,Size) = False then begin Freemem(UserName); GetLocalName := ''; Exit; end; GetLocalName := UserName ; Freemem(UserName); end...

    EurekaLog_7.5.0.0_Enterprise

    31)..Fixed: Wrong chaining exceptions inside GetMem/FreeMem 32)..Fixed: Memory leak after low-level unhook of function 33)..Fixed: Re-parenting after ReallocMem 34)..Fixed: Editing SMTP server options...

    CheckMem.pas

    GetMem(def,10); p:=def; fillchar(p,10,$65); application.MessageBox (def,'aaa',MB_OK); // freemem(def,10); end; end. 我们先点击button1,然后退出。出现的报告如下: 当前出现 10 处内存漏洞 : 0) ...

    最新AES的CBC加解密dll

    GetMem(tmpPchar, 1024); if AESCBCNew(256,PChar(edit2.text), sKey, sVector, tmpPchar) then begin edit3.text := tmpPchar; end; FreeMem(tmpPchar); end; procedure TForm1.Button2Click(Sender: T...

    手机wap控制管理你的服务器

    GetMem.exe 内存信息获取程序 GetNetList.exe 服务器连接信息获取程序 GetProcessList.exe 服务器系统进程信息获取程序 WapServer.exe 主控制程序 install.bat 系统服务安装批处理 U.bat 系统服务卸载批处理 请修改...

Global site tag (gtag.js) - Google Analytics