In pratica, no, questo non accade. La sovrascrittura della memoria che hai appena liberato richiede tempo, quindi ci sono delle penalizzazioni in termini di prestazioni. Gli oggetti "protetti" come SecureString sono just wiping themselves, non fanno affidamento sul GC.
Più in generale, dipende molto da quella particolare implementazione di quel particolare linguaggio. Ogni linguaggio che presuppone l'esistenza di un GC (come C#) specifica regole diverse su come e quando deve avvenire la garbage collection.
di prendere il vostro C# esempio, le specifiche C# non richiede che gli oggetti vengono sovrascritti dopo essere stato liberato, e non vieta neanche:
Infine, a un certo momento dopo che l'oggetto diventa idoneo per raccolta, il garbage collector libera la memoria associata a quell'oggetto.
§3.9 C# 5.0 Language Specification
Se la memoria viene poi assegnato a un tipo di riferimento, avrete un costruttore che fa il proprio inizializzazione personalizzato. Se la memoria viene successivamente assegnato a un tipo di valore, esso viene azzerato prima di poter iniziare la lettura da esso:
inizializzazione a viene in genere fatto da avere il gestore di memoria o garbage collector valori di default inizializzare la memoria a tutti i bit -zero prima che venga assegnato per l'uso. Per questo motivo, è conveniente utilizzare all-bit-zero per rappresentare il riferimento null.
§5.2 C# 5.0 Language Specification
Inoltre, ci sono almeno due implementazioni di C# - implementazione di Microsoft e l'implementazione di Mono, quindi basta dicendo "C#" non è abbastanza specifico. Ogni implementazione potrebbe decidere di sovrascrivere la memoria (o meno).
fonte
2014-04-15 14:57:11
sarebbe * logic *, almeno per me, per azzeramento, per motivi di sicurezza. – Eugene
Correlati: http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope/6445794#6445794 – Servy
Di solito le implementazioni linguistiche favoriscono le prestazioni. Quindi, azzerano solo la memoria quando devono, e data la scelta di farlo quando si raccolgono i rifiuti * o * quando si assegnano, scelgono quando allocare - semplicemente perché seguono il principio "fai il minimo lavoro possibile". – Durandal