A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/de/docs/WebAssembly/Reference/JavaScript_interface/Memory/grow below:

WebAssembly.Memory.prototype.grow() - WebAssembly | MDN

WebAssembly.Memory.prototype.grow()

Baseline Widely available

Die grow() Prototyp-Methode des WebAssembly.Memory Objekts erhöht die Größe der Speicherinstanz um eine angegebene Anzahl von WebAssembly-Seiten.

Syntax Parameter
delta

Die Anzahl an WebAssembly-Seiten, um die Sie den Speicher erweitern möchten (jede einzelne ist 64KiB groß).

Rückgabewert

Die vorherige Größe des Speichers, angegeben in Einheiten von WebAssembly-Seiten.

Ausnahmen Beispiele Verwendung von grow

Das folgende Beispiel erstellt eine neue WebAssembly Speicherinstanz mit einer Anfangsgröße von 1 Seite (64KiB) und einer maximalen Größe von 10 Seiten (640KiB).

const memory = new WebAssembly.Memory({
  initial: 1,
  maximum: 10,
});

Wir können die Instanz dann um eine Seite wie folgt vergrößern:

const bytesPerPage = 64 * 1024;
console.log(memory.buffer.byteLength / bytesPerPage); // "1"
console.log(memory.grow(1)); // "1"
console.log(memory.buffer.byteLength / bytesPerPage); // "2"

Beachten Sie, dass der Rückgabewert von grow() hier die vorherige Anzahl an WebAssembly-Seiten ist.

Loslösung beim Wachsen

Jeder Aufruf von grow trennt alle Referenzen zum alten buffer, sogar bei grow(0)! Eine Trennung bedeutet, dass die byteLength des ArrayBuffer null wird und es keine Bytes mehr gibt, die in JavaScript zugänglich sind. Der Zugriff auf die buffer-Eigenschaft nach dem Aufruf von grow liefert einen ArrayBuffer mit der korrekten Länge.

const memory = new WebAssembly.Memory({
  initial: 1,
});
const oldMemoryView = new Uint8Array(memory.buffer);
memory.grow(1);
// the array is empty!
console.log(oldMemoryView); // Uint8Array []
const memory = new WebAssembly.Memory({
  initial: 1,
});
memory.grow(1);
const currentMemoryView = new Uint8Array(memory.buffer);
// the array is full of zeros
console.log(currentMemoryView); // Uint8Array(131072) [ 0, 0, 0, ... ]
// 131072 = 64KiB * 2

Für eine geteilte Memory-Instanz wird der ursprüngliche buffer (welcher in einem solchen Fall ein SharedArrayBuffer wäre) nicht getrennt, sondern seine Länge wird nicht aktualisiert. Der Zugriff auf die buffer-Eigenschaft nach der Vergrößerung liefert einen größeren SharedArrayBuffer, der auf einen größeren Speicherbereich zugreifen kann als der buffer von vor der Vergrößerung der Memory. Jeder SharedArrayBuffer der buffer-Eigenschaft wird sich alle auf den Anfang desselben Speicheradressbereichs beziehen und somit dieselben Daten manipulieren.

Spezifikationen Browser-Kompatibilität Siehe auch

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4