Heim  >  Artikel  >  Was ist der Unterschied zwischen Speicherverlust und Speicherüberlauf?

Was ist der Unterschied zwischen Speicherverlust und Speicherüberlauf?

青灯夜游
青灯夜游Original
2020-12-03 17:22:0840140Durchsuche

Unterschied: Speicherüberlauf bedeutet, dass, wenn das Programm Speicher beantragt, nicht genügend Speicherplatz für die Nutzung vorhanden ist und das System den benötigten Speicherplatz nicht mehr zuweisen kann Der zugewiesene Speicher kann nicht freigegeben werden. Der Schaden eines Speicherlecks kann ignoriert werden, aber mehrere Speicherlecks führen zu einem Speicherüberlauf.

Was ist der Unterschied zwischen Speicherverlust und Speicherüberlauf?

Die Betriebsumgebung dieses Artikels: Windows 7-System, Dell G3-Computer.

Speicherüberlauf (nicht genügend Speicher) bedeutet, dass, wenn das Programm Speicher beantragt, nicht genügend Speicherplatz für die Verwendung vorhanden ist und beispielsweise nicht genügend Speicher beantragt wird, aber eine lange Zeitspanne darin gespeichert werden, dass es sich um einen Speicherüberlauf handelt.

Speicherverlust (Speicherverlust) bedeutet, dass das Programm den zugewiesenen Speicherplatz nach der Speicherbeantragung nicht freigeben kann, aber die Folgen der Anhäufung von Speicherverlusten sind schwerwiegend Erinnerung, früher oder später wird es Licht sein.

Speicherverlust führt schließlich dazu, dass nicht mehr genügend Speicher vorhanden ist!

Speicherüberlauf bedeutet, dass der Speicher, den Sie zuweisen möchten, das übersteigt, was das System Ihnen zur Verfügung stellen kann, und das System den Bedarf nicht decken kann, sodass ein Überlauf auftritt.

Speicherverlust bedeutet, dass Sie beim System die Zuweisung von Speicher zur Verwendung (neu) beantragen, ihn aber nach der Verwendung nicht zurückgeben (löschen). Infolgedessen können Sie nicht mehr auf den Speicher zugreifen, den Sie beantragt haben (vielleicht Sie). put it (Die Adresse des Programms geht verloren) und das System kann sie nicht wieder dem gewünschten Programm zuordnen. Auf einen Teller passen durchaus nur 4 Früchte. Man legt 5 Früchte darauf, aber sie sind zu Boden gefallen und konnten nicht gegessen werden. Das ist Überlauf! Wenn beispielsweise ein Stapel verschoben wird, wenn der Stapel voll ist, kommt es zu einem Speicherplatzüberlauf, der als Überlauf bezeichnet wird. Wenn ein Stapel zurückgeschoben wird, wenn der Stapel leer ist, kommt es zu einem Speicherplatzüberlauf, der als Unterlauf bezeichnet wird. Das heißt, der zugewiesene Speicher reicht nicht aus, um die Reihenfolge der Datenelemente aufzuzeichnen, was als Speicherüberlauf bezeichnet wird. Nach der Art und Weise, wie sie auftreten, können Speicherlecks in vier Kategorien eingeteilt werden:

1. Wiederkehrender Speicher Lecks. Code mit Speicherverlusten wird mehrmals ausgeführt, was bei jeder Ausführung zu einem Speicherverlust führt.

2. Gelegentliche Speicherlecks. Code, der Speicherverluste verursacht, tritt nur unter bestimmten Umständen oder Vorgängen auf. Häufig und sporadisch sind relativ. Unter bestimmten Umständen kann das, was gelegentlich vorkommt, zur Normalität werden. Daher sind die Testumgebung und die Testmethoden für die Erkennung von Speicherlecks von entscheidender Bedeutung.

3. Einmaliger Speicherverlust. Der Code, der einen Speicherverlust verursacht, wird nur einmal ausgeführt, oder aufgrund von Algorithmusfehlern wird immer nur ein einziger Speicherblock verloren gehen. Wenn beispielsweise im Konstruktor einer Klasse Speicher zugewiesen wird, der Speicher jedoch im Destruktor nicht freigegeben wird, tritt der Speicherverlust nur einmal auf.

4. Impliziter Speicherverlust. Das Programm reserviert während der Ausführung kontinuierlich Speicher, gibt den Speicher jedoch erst am Ende frei. Streng genommen liegt hier kein Speicherverlust vor, da das Programm schließlich den gesamten angeforderten Speicher freigibt. Bei einem Serverprogramm, das tage-, wochen- oder sogar monatelang ausgeführt werden muss, kann es jedoch auch dazu führen, dass der gesamte Systemspeicher erschöpft ist, wenn der Speicher nicht rechtzeitig freigegeben wird. Daher bezeichnen wir diese Art von Speicherverlust als impliziten Speicherverlust.

Aus der Sicht der Benutzer, die das Programm verwenden, verursachen Speicherlecks selbst keinen Schaden. Als normale Benutzer werden sie die Existenz von Speicherlecks überhaupt nicht spüren. Was wirklich schädlich ist, ist die Anhäufung von Speicherlecks, die schließlich den gesamten Systemspeicher verbrauchen. Aus dieser Perspektive sind einmalige Speicherlecks nicht schädlich, da sie sich nicht anhäufen, während implizite Speicherlecks sehr schädlich sind, da sie schwieriger zu erkennen sind als wiederkehrende und sporadische Speicherlecks

Empfohlene kostenlose Video-Tutorials: „

Programmiervideo"

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Speicherverlust und Speicherüberlauf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn