Unsicherer Code und feste Aussagen mit String
-
13-09-2019 - |
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?
Lösung
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.