Was ist das Schlüsselwort memory in der Programmiersprache solidity?
In Solidity wird das Schlüsselwort memory verwendet, um einen Datenbereich anzugeben, in dem temporäre Variablen während der Ausführung einer Funktion gespeichert werden. Es ist einer der drei Hauptdatenspeicher in Solidity, die anderen sind storage und calldata.
Bei der Deklaration von Variablen oder Funktionsparametern wird das Schlüsselwort memory verwendet, um anzugeben, dass die Variable im Speicher gespeichert werden soll. Hier ein Beispiel zur Veranschaulichung seiner Verwendung:
pragma solidity ^0.8.0;
contract MemoryExample {
function concatenate(string memory _a, string memory _b) public pure returns (string memory) {
bytes memory a = bytes(_a);
bytes memory b = bytes(_b);
bytes memory result = new bytes(a.length + b.length);
uint k = 0;
for (uint i = 0; i < a.length; i++) {
result[k++] = a[i];
}
for (uint i = 0; i < b.length; i++) {
result[k++] = b[i];
}
return string(result);
}
}
In diesem Beispiel nimmt die Funktion concatenate zwei String-Parameter _a und _b entgegen und gibt deren Verkettung zurück. Das Schlüsselwort memory wird bei der Deklaration der Funktionsparameter und der lokalen Variablen a, b und result verwendet.
Durch die Verwendung des Schlüsselworts memory stellt Solidity sicher, dass diese Variablen während der Funktionsausführung im Speicher gespeichert werden. Dies ist für temporäre Variablen erforderlich, die nicht außerhalb des Funktionsumfangs bestehen bleiben sollen.
Es ist wichtig zu beachten, dass die Speicherung von Daten im Speicher der Standard für Funktionsparameter komplexer Typen (wie Arrays, Structs und Strings) ist, wenn sie als Argumente an Funktionen übergeben werden. Für Speicher- oder Zustandsvariablen muss jedoch das Schlüsselwort memory explizit verwendet werden, um anzugeben, dass die Variable vorübergehend im Speicher abgelegt werden muss.
Die Verwendung des Schlüsselworts memory trägt zur Optimierung der Gaskosten in Solidity bei, da unnötige Speicheroperationen beim Umgang mit temporären Daten, die nicht dauerhaft auf der Blockchain gespeichert werden müssen, vermieden werden.
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!