Delphi 的内存操作函数(5): 复制内存
Delphi 的内存操作函数(5): 复制内存
涂孟超 发表于3年前
Delphi 的内存操作函数(5): 复制内存
  • 发表于 3年前
  • 阅读 1
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   


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 等流类, 它们自身提供的复制操作更方便.

共有 人打赏支持
粉丝 13
博文 2004
码字总数 14107
×
涂孟超
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: