D Language
Minne och pekare
Sök…
Syntax
- & <variabel> - åtkomst genom referens (= får pekaren till variabelns data)
- * <variabel> - störningsoperatör (= hämtar dataobjektet från en pekare)
- <typ> * - datatyp som pekar på <typ> (t.ex. `int *)
pekare
D är ett systemprogrammeringsspråk och därmed kan du manuellt hantera och rota ditt minne. Ändå använder D en sopor som standard för att frigöra oanvänt minne.
D ger pekartyperna T * som i C:
void main()
{
int a;
int* b = &a; // b contains address of a
auto c = &a; // c is int* and contains address of a
import std.stdio : writeln;
writeln("a ", a);
writeln("b ", b);
writeln("c ", c);
}
Tilldelar på högen
Ett nytt minnesblock på högen allokeras med det new
uttrycket, som returnerar en pekare till det hanterade minnet:
void main()
{
int* a = new int;
*a = 42; // dereferencing
import std.stdio : writeln;
writeln("a: ", *a);
}
@safe D
Så fort minnet som refereras av a inte längre hänvisas till via någon variabel i programmet kommer soporna att frigöra sitt minne.
D tillåter också pekarearmetik, utom i kod som är markerad som @safe
.
void safeFun() @safe
{
writeln("Hello World");
// allocating memory with the GC is safe too
int* p = new int;
}
void unsafeFun()
{
int* p = new int;
int* fiddling = p + 5;
}
void main()
{
safeFun();
unsafeFun();
}
För mer information om SafeD se artikeln från D-designteamet.
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow