Frage

Ich habe mich gefragt, wie man einen String oder eine String an eine C-Funktion, die Ausgabe einer Zeichenfolge durch Parameter. Ich habe eine große Antwort gefunden

Aufruf nicht verwalteten Funktion von C #: soll ich pass String oder unsicheren Code verwenden

?

Aber ich habe einen Zweifel. Jeder kann mir erklären, warum die Garbage Collector nicht die (verwaltet) Stringbuilder-Instanz bei importierter Funktionsausführung nicht verlegen?

War es hilfreich?

Lösung

Marshalling

Siehe Standard for Strings für Details, wie String und Stringbuilder ist gemarshallte wenn COM und P / Invoke verwenden. Es muss nicht explizit sagen, Warum die Nutzungsmuster ist sicher, aber nicht zeigen, dass String und String für P mit / Invoke unterstützt wird und das Verhalten bestimmt. Ich vermute, dass das Ordnungssystem übernimmt den Puffer für die Dauer des externen Anrufs von Pinning, von der GC verhinderte, dass es verlagern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top