A következőkben bemutatásra kerülő függvények mind a Windows függvényhívások közé tartoznak.
Amennyiben egy memóriatartományt szeretnénk átmásolni egyik helyről a másikra, a CopyMemory függvényt kell használnunk.

CopyMemory
procedure CopyMemory(
Destination: Pointer;
Source: Pointer;
Length: DWORD
);
Paraméterek
Destination: Pointer
A célhely kezdőcímére mutató pointer.
Source: Pointer
A másolandó memóriatartomány kezdőcímére mutató pointer.
Length: DWORD
A másolandó memóriablokk mérete byte-okban megadva.
Megjegyzés
A Destination paraméternek elég nagynak kell lennie ahhoz, hogy a Source-ben megadott másolandó memóriablokkot el tudja tárolni, máskülönben buffer-túlcsordulás következik be.
Nézzük a példaprogramunkat:
ListBox2.Clear;
GetMem(MyIntArr,SizeOf(integer) * 10);
Lefoglaljuk a tömbünk számára elegendő memóriatartományt, illetve kapunk egy MyIntArr nevű pointer-t, mely a lefoglalt memóriaterület kezdőcímére mutat.
for I := 0 to ListBox1.Count-1 do
begin
Int := StrToInt(ListBox1.Items[I]);
CopyMemory(@MyIntArr^[i],@Int,SizeOf(Int));
CopyMemory(@MyIntArr^[i+ListBox1.Count],@Int,SizeOf(Int));
end;
for I := 0 to (ListBox1.Count*2)-1 do
begin
ListBox2.Items[i]:=IntToStr(MyIntArr^[i]);
end;
A példában rögtön két másolást hajtunk végre. Először a ListBox1 elemeit egyenként átmásoljuk a pointer által meghatározott memóriacímre, majd az adatokat újra a memóriába másoljuk, de a pointer-t már a ListBox1.Count értékkel eltolva. Ellenőrzésként a ListBox2-ben ki is íratjuk az átvitt értékeket.
Amennyiben a memóriában adatainkat mozgatni szeretnénk, a MoveMemory függvényt kell használnunk.
Felépítése hasonló a CopyMemory függvényhez:

MoveMemory
procedure MoveMemory(
Destination: Pointer;
Source: Pointer;
Length: DWORD
);
Paraméterek
Destination: Pointer
A célhely kezdőcímére mutató pointer.
Source: Pointer
Az átmozgatandó memóriatartomány kezdőcímére mutató pointer.
Length: DWORD
Az átmozgatandó memóriablokk mérete byte-okban megadva.
A példánkban ez a következőképpen néz ki:
ListBox2.Clear;
GetMem(MyIntArr,SizeOf(integer) * 10);
Lefoglaljuk a megfelelő memóriaterületet.
for I := 0 to ListBox1.Count-1 do
begin
Int:=StrToInt(ListBox1.Items[I]);
CopyMemory(@MyIntArr^[i],@Int,SizeOf(Int));
A ListBox1 elemeit bemásoljuk a memóriába.
MoveMemory(@MyIntArr^[i+ListBox1.Count],@MyIntArr^[i],1);
A ListBox1.Count értékkel eltoljuk a mutatót, és elmozgatjuk az előzőleg bemásolt adatokat.
end;
for I := 0 to (ListBox1.Count*2)-1 do
begin
ListBox2.Items[i]:=IntToStr(MyIntArr^[i]);
end;
A ListBox2-be kiíratjuk az eredményt.
Amennyiben egy meghatározott értékkel szeretnénk feltölteni a memóriatartományt, a FillMemory függvényt hívhatjuk segítségül.

FillMemory
procedure FillMemory(
Destination: Pointer;
Length: DWORD;
Fill: Byte
);
Paraméterek
Destination: Pointer
A célhely kezdőcímére mutató pointer.
Length: DWORD
A feltöltendő memóriablokk mérete byte-okban
Fill: Byte
Az a byte érték, mellyel a memóriát fel szeretnénk tölteni.
Lássuk a példaprogramot:
ListBox2.Clear;
GetMem(MyIntArr,SizeOf(integer) * 10);
num:=28;
for I := 0 to ListBox1.Count-1 do
begin
ZeroMemory(@MyIntArr^[i],SizeOf(Int));
Első lépésben lenullázzuk a memória tartalmát.
FillMemory(@MyIntArr^[i],1,num);
Ezután feltöltjük a num byte típusú változóban megadott értékkel, mely esetünkben 28 lesz.
ListBox2.Items[i]:=IntToStr(MyIntArr^[i]);
end;
A ListBox2-be kiíratjuk az eredményt.
Az előbbi programrészletben találkozhattunk a ZeroMemory függvénnyel, így hát vizsgáljuk meg azt is. Segítségével a memória meghatározott tartományát nullázni tudjuk – azaz nullával töltjük fel.

ZeroMemory
procedure ZeroMemory(
Destination: Pointer;
Length: DWORD
);
Paraméterek
Destination: Pointer
A célhely kezdőcímére mutató pointer.
Length: DWORD
A nullázandó memóriablokk mérete byte-okban.
Példánkban ez a következő:
ListBox2.Clear;
GetMem(MyIntArr,SizeOf(integer) * 10);
for I := 0 to ListBox1.Count-1 do
begin
Int := StrToInt(ListBox1.Items[I]);
ZeroMemory(@MyIntArr^[i],SizeOf(Int));
Az Int változó által meghatározott méretű memóriablokkot nullával töltjük fel.
ListBox2.Items[i]:=IntToStr(MyIntArr^[i]);
end;
Az eredményt a ListBox2-ben listázzuk ki.