( TCH | 2021. 04. 18., v – 11:32 )

Ne forgasd ki a szavaim. Ha szerinted a második sorban levő kifejezés nem egy assignment, akkor van baj.

Először access, csak aztán lenne assignment, de már az accessnél elhasal az access violation miatt. A Rust példában viszont nem volt assignment, akkor maradjunk annál C-ben is:

char *x = NULL;
printf(x);

Erről volt ugyanis szó, csak rossz volt a C-s példa.

Mert az unsafeből jött, ami kifejezetten azért van, hogy meg tudd kerülni a védelmi mechanizmusokat?

Nem az unsafe alatti részt kell ellenőrizni, hanem a safe részt. Történik egy kiírás, amiben egy referencia alól akarunk stringet kiírni. A referencia függvényből jön, azaz letárolódik az értéke valahova, mielőtt használja a safe rész. Azt már a safe módú kiíró fogja címként felhasználni, tehát letárolta valahova, akkor meg már ellenőrizheti is, hogy olyan helyre mutat, ahova egyáltalán a task hozzáférhet, mert nem lehetetlen ezt ellenőrizni, hogy hozzáférhetsz-e valamihez, vagy sem; le is írtam, hogyan lehet ellenőrizni.