Skip to content
Snippets Groups Projects
Commit 8e351623 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

ajout dangling pointers

parent 07184dc0
No related branches found
No related tags found
No related merge requests found
......@@ -341,6 +341,30 @@ fn main()
- Sur une variable on peut avoir:
1. Autant de **références immutables** qu'on veut.
2. Une seule **référence mutable**.
- La référence doit toujours être **valide**.
## Dangling pointer ("pointeur pendouillant")
- En désallouant de la mémoire mais en ne détruisant pas le pointeur vers cette mémoire on crée un **dangling pointer**.
- Très dangereux, car on ne sait pas du tout ce qui se pourrait se passer si on essaie de suivre le pointeur pendouillant.
- Tout un tas de langages autorise ce comportement indéfini.
- En Rust cela est **impossible**.
- Exemple :
<pre><code data-trim="hljs rust" class="lang-rust">
fn dangling() -> &Vec&lt;i32&rt; { // on rend une référence vers un vecteur
let mut v = Vec::new();
v.push(1); v.push(2); // on a créé un vec avec 1,2 dedans.
&v; // on retourne une réf vers v
} // v sort de la portée de la fonction et est détruit:
// la mémoire est libérée.
fn main() {
let dangling_reference = dangling();
}
</code></pre>
## Exemples (1/2)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment