MoveMemory、CopyMemory 的功能类似, 都是复制内存, 都是调用 Move 过程;

MoveMemory、CopyMemory
操作指针; Move 操作实体.

还要注意, 它们的参数位置不一样!

{例1}
var
buf1,buf2: array[..] of AnsiChar;
begin
buf1 := '';
buf2 := 'abcdefghij'; Move(buf2[], buf1[], ); ShowMessage(buf1); {0123cdefg9}
ShowMessage(buf2); {abcdefghij}
end; {例2}
var
buf1,buf2: array[..] of AnsiChar;
begin
buf1 := '';
buf2 := 'abcdefghij'; CopyMemory(@buf2[], @buf1[], ); ShowMessage(buf1); {}
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();
{从第一个流复制到第二个流}
CopyMemory(s2.Memory, s1.Memory, s2.Size);
ShowMessage(s2.DataString); {万一的} s1.Free;
s2.Free;
end;

这里仅仅是为了测试, 如果真的使用 TMemoryStream、TStringStream 等流类, 它们自身提供的复制操作更方便.



转自《万一的Delphi博客》

Delphi 的内存操作函数(5): 复制内存的更多相关文章

  1. Delphi中复制带有String的记录结构时不能使用Move之类的内存操作函数

    请看下面的代码: program TestRecord; {$APPTYPE CONSOLE} uses  SysUtils,  Math; type  TRecordA = record    Na ...

  2. 内存操作函数memmove,memcpy,memset

    通过字符串的学习,我们知道字符串操作函数的操作对象是字符串,并且它的结束标志是结束符\0,当然这个说的是不 受限制的字符串函数.然而当我们想要将一段内存的数据复制到另一块内存时,我们不能使用字符串操作 ...

  3. C语言中内存操作函数

      一.malloc/calloc 名称: Malloc/calloc 功能: 动态内存分配函数 头文件: #include <stdlib.h> 函数原形: void *malloc(s ...

  4. c++ void,内存操作函数

    void的含义 void的字面意思是“无类型”, void * 则为“无类型指针”, void * 可以指向任何类型的数据 void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变 ...

  5. c#读写共享内存操作函数封装

    原文 c#读写共享内存操作函数封装 c#共享内存操作相对c++共享内存操作来说原理是一样,但是c#会显得有点复杂. 现把昨天封装的读写共享内存封装的函数记录下来,一方面希望给需要这块的有点帮助,另一方 ...

  6. 【转】C内存操作函数

    一.malloc/calloc 名称: Malloc/calloc 功能:  动态内存分配函数 头文件: #include <stdlib.h> 函数原形: void *malloc(si ...

  7. FFmpeg内存操作(三)内存转码器

    相关博客列表 : FFMPEG内存操作(一) avio_reading.c 回调读取数据到内存解析 FFMPEG内存操作(二)从内存中读取数及数据格式的转换 FFmpeg内存操作(三)内存转码器 本文 ...

  8. 自己实现内存操作函数memset(),memcmp(),memcpy(),memmove()

    1.memset()内存设置函数(初始化) void *my_memset(void* dest, int c, size_t count) { assert(dest != NULL); char  ...

  9. Delphi 的内存操作函数(1): 给字符指针分配内存

    马上能想到的函数有: GetMem AllocMem ReallocMem FreeMem GetMemory ReallocMemory FreeMemory New Dispose NewStr ...

随机推荐

  1. C# event线程安全

    突然想到有关C#中使用event特性时关于线程安全的问题,以前虽然有遵从“复制引用+null判断”的模式(盲目地),但没有深入了解和思考. 为之查询了资料和实验,对此有了进一步的理解. 一般event ...

  2. 汇编 push ,pop指令

    知识点:  PUSH  POP  CALL堆栈平衡  RETN指令 一.PUSH入栈指令 (压栈指令): 格式: PUSH 操作数 //sub esp,4 ;mov [esp],EBP 操作数 ...

  3. noi.ac 257 B

    链接 题目 区间[l,r]是连续满足,[l,r]中的数字的权值区间是一段连续的.多次询问可以完包含一个区间的连续区间.区间长度尽量小,如果有多个输出左端点靠左的. 分析: [l,r]区间是连续的,当且 ...

  4. TMS320VC5509驱动AT24C02

    1. 刚开始的波形不太对,比如如下代码 i2c_status = I2C_write( at24c02_write_buf, //pointer to data array , //length of ...

  5. JavaScript快速入门-ECMAScript本地对象(Date)

    JavaScript中的Date 对象用于处理日期和时间. var myDate=new Date()  #Date 对象会自动把当前日期和时间保存为其初始值. 一.Date对象的方法 方法 示例 n ...

  6. effective c++ 笔记 (31-34)

    //---------------------------15/04/20---------------------------- //#32   确定你的public继承塑膜出 is-a 关系 { ...

  7. Mvc4_mvc4跟mysql语法

    mvc4: 子页面:@section A{} 母页面:@RenderSection("A",false) false:别的页面没有定义为A的Section的话 也没事,layout ...

  8. 接口自动化学习--testNG

    一个月一更的节奏~ testNg是一个开源的自动化测试框架..具体那些什么特点的就不想打了- -,贴张图(虽然也看不懂): 学习网站:https://www.yiibai.com/testng 一样是 ...

  9. PTA (Advanced Level) 1001 A+B Format

    1001 A+B Format Calculate a+b and output the sum in standard format -- that is, the digits must be s ...

  10. 《实时控制软件设计》之Github提交作业步骤

    在掌握GIT/GITHUB基本操作后,接下来把第一次的编程作业提交到 https://github.com/RTCSD15/HOMEWORK1 ,把第二次的编程作业提交到https://github. ...