Recherche…


Syntaxe

  • & <variable> - accès par référence (= récupère le pointeur sur les données de la variable)
  • * <variable> - opérateur de déférence (= obtient l'objet de données à partir d'un pointeur)
  • <type> * - type de données qui pointe sur <type> (par exemple, `int *)

Pointeurs

D est un langage de programmation système qui vous permet de gérer et de gâcher votre mémoire manuellement. Néanmoins, D utilise un garbage collector par défaut pour libérer de la mémoire inutilisée.

D fournit des types de pointeur T * comme dans 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);
}

Allouer sur le tas

Un nouveau bloc de mémoire sur le tas est alloué à l'aide de la new expression, qui renvoie un pointeur sur la mémoire gérée:

void main()
{
    int* a = new int;
    *a = 42; // dereferencing
    import std.stdio : writeln;
    writeln("a: ", *a);
}

@safe D

Dès que la mémoire référencée par un n'est plus référencée via une variable du programme, le ramasse-miettes va libérer sa mémoire.

D permet également l'arithmétique du pointeur, sauf dans le code marqué comme @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();
}

Pour plus d'informations sur SafeD, consultez l' article de l'équipe de conception D.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow