D Language
Pamięć i wskaźniki
Szukaj…
Składnia
- & <variable> - dostęp przez odniesienie (= pobiera wskaźnik do danych zmiennej)
- * <variable> - operator deference (= pobiera obiekt danych ze wskaźnika)
- <type> * - typ danych wskazujący na <type> (np. `int *)
Wskaźniki
D to systemowy język programowania, który pozwala ręcznie zarządzać pamięcią i zepsuć jej pamięć. Niemniej jednak D używa domyślnie modułu wyrzucania elementów bezużytecznych w celu zwolnienia nieużywanej pamięci.
D zapewnia typy wskaźników T * jak w 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);
}
Przydział na stosie
Nowy blok pamięci na stercie jest alokowany przy użyciu new
wyrażenia, które zwraca wskaźnik do pamięci zarządzanej:
void main()
{
int* a = new int;
*a = 42; // dereferencing
import std.stdio : writeln;
writeln("a: ", *a);
}
@safe D.
Gdy tylko pamięć, do której odwołuje się nie jest już żadna zmienna w programie, śmieciarz zwolni swoją pamięć.
D pozwala również na arytmetykę wskaźnika, z wyjątkiem kodu oznaczonego jako @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();
}
Więcej informacji o SafeD znajduje się w artykule zespołu projektowego D.
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow