Seite 1 von 1

CopyMemory() ./. MoveMemory() - Unterschied/Ablauf?

Verfasst: 02.05.2012 02:23
von Toshy
Das "MoveMemeroy" sicher beim kopieren von Speicherbereichen ist, kann man in der Hilfe lesen. Daher könnte man das ja immer nutzen, wäre es nicht langsamer als "CopyMemory".
Da stellen sich die Fragen, wie viel langsamer ist MoveMemory und was läuft intern anders?
Nutzt MoveMemory einen extra Zischenspeicher, wenn ja, wie wird der genutzt (Größe, allokieren) und wenn nein, wie läuft es dann sicherer ab (z.B. Byte einzeln oder in Gruppen kopieren).
Wie macht es "CopyMemory"?

Bei CopyMemory würde ich vermuten, das Byteweise oder Blockweise von der Quellpositon gelesen und dies auf die Zielpositon geschrieben wird.
Wenn dem so ist, dürfte es ja keine Probleme bei überlappenden Bereichen geben, wenn von "hinten" nach vorne kopiert wird. Nur nur wenn Vorne nach Hinten kopiert wird, könnte das dann natürlich Probleme bedeuten.

Danke
Toshy

Re: CopyMemory() ./. MoveMemory() - Unterschied/Ablauf?

Verfasst: 02.05.2012 09:54
von STARGÅTE
In der Hilfe steht das es langsammer sein kann aber nicht muss.
Falls es keinen Überlapp gibt, ist MoveMemory genauso schnell wie CopyMemory.
Falls es einen Überlapp gibt, dann ist das resultat von CopyMemory natürlich u.u. Müll.