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); {abcdefghij} end; {例2} var buf1,buf2: array[0..9] of AnsiChar; begin buf1 := '0123456789'; buf2 := 'abcdefghij'; CopyMemory(@buf2[2], @buf1[4], 5); ShowMessage(buf1); {0123456789} ShowMessage(buf2); {ab45678hij} end; {例3} var s1,s2: TStringStream; {两个字符串流} begin s1 := TStringStream.Create; s2 := TStringStream.Create; {向第一个字符串流写入} s1.WriteString('万一的 Delphi 博客'); ShowMessage(s1.DataString); {万一的 Delphi 博客} {设置第二个字符串流的大小} s2.SetSize(6); {从第一个流复制到第二个流} CopyMemory(s2.Memory, s1.Memory, s2.Size); ShowMessage(s2.DataString); {万一的} s1.Free; s2.Free; end;
这里仅仅是为了测试, 如果真的使用 TMemoryStream、TStringStream 等流类, 它们自身提供的复制操作更方便.
好的代码像粥一样,都是用时间熬出来的
分类:
Delphi
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)