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

Für allgemeine Fragen zur Programmierung mit PureBasic.
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

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

Beitrag 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
1. Win10
PB6.1
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

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

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten