Domanda

Come è memoria non gestita allocato nel sistema quando COM oggetti o qualsiasi altra istanza non gestiti sono creati da C #?

È stato utile?

Soluzione

Il CLR crea un Runtime Callable Wrapper (RCW) per il COM oggetti che si desidera creare un'istanza di. Si tratta di una sorta di delega di interoperabilità da .NET al sistema COM. L'oggetto COM si crea è quindi allocata e un riferimento ad esso crea nel CLR, che lo mette sul mucchio.

Si deve sempre implementare IDisposable nella classe che contiene i riferimenti a RCWs, perché non vengono puliti automaticamente (gli involucri sono sul mucchio .NET, ma gli oggetti COM stessi non sono). Chiamando Dispose() sulle uscite involucro oggetti COM. Non attuazione IDisposable provoca quindi perdite di memoria.

Altri suggerimenti

La mia ipotesi è che si traducono in una chiamata al sistema operativo per creare la loro memoria sul mucchio non gestito. Il CLR sarebbe ovviamente non hanno nulla a che fare con loro come sono gestiti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top