Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

drop: Wasm Datensatzanweisung

Die data.drop Datensatzanweisung verwirft die Daten, die von einer passiven data-Definition enthalten sind, und gibt deren Speicher frei, nachdem sie in einer memory.init verwendet wurden.

Hinweis: Aktive Datensegmente werden automatisch während der Modulinstanziierung verworfen und können daher nicht über data.drop verworfen werden.

Probieren Sie es aus

(module
  (memory (export "memory") 1)
  (data $greeting "Hello")

  (func (export "init")
    i32.const 0       ;; destination offset in memory
    i32.const 0       ;; offset into the data segment
    i32.const 5       ;; number of bytes to copy
    memory.init $greeting
    data.drop $greeting
  )
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}")).then((result) => {
  result.instance.exports.init();
  const memBuffer = result.instance.exports.memory.buffer;
  const memArray = new Uint8Array(memBuffer, 0, 5);
  console.log(new TextDecoder().decode(memArray));
});

Im obigen Beispiel definieren wir einen memory und ein data namens $greeting, das die Zeichenfolge Hello enthält. Wir rufen dann memory.init auf, um die Zeichenfolge in den memory zu kopieren. Nachdem dies erledigt ist, werden die data nicht mehr benötigt, sodass wir data.drop aufrufen, um den genutzten Speicher freizugeben.

Syntax

data.drop identifier
data.drop

Der data.drop-Anweisungstyp. Muss immer zuerst angegeben werden.

identifier

Der Bezeichner für die data, die Sie löschen möchten. Dies kann eines der folgenden sein:

name

Ein identifizierender Name für die data festgelegt, als es zuerst definiert wurde. Dies muss mit einem $-Symbol beginnen, zum Beispiel $my_data.

index

Die Indexnummer der data, zum Beispiel 0 für die erste data im Wasm-Modul, 1 für die zweite usw.

Typ

[] -> []

Binärcodierung

Anweisung Binärformat Beispielttext => binär
data.drop 0xfc 9:u32 x:dataidx data.drop 0 => 0xfc 0x09 0x00

Spezifikationen

Spezifikation
WebAssembly Core Specification
# -hrefsyntax-instr-memorymathsfdatadropx%E2%91%A0

Browser-Kompatibilität

Siehe auch