Wenn ich versuche, eine Zeichenfolge, die wirklich ein NULL-Zeiger ist, zu marshallen, was passiert?Was passiert, wenn ich einen Nullzeiger mit der [MarshalAs (UnmanagedType.LPStr)] marschiere
Antwort
Von nativ zu verwaltet erhalten Sie ein Null-String-Objekt. Von verwaltet zu nativ erhalten Sie einen Nullzeiger. Es ist ziemlich intuitiv. :-)
Cool, das ist, was ich mir erhofft habe. Sie erhalten die Null-Zeichenfolge nicht die leere Zeichenfolge und definitiv kein Fehler? – DevDevDev
Ja, das stimmt. –
Nun, was denkst du? LPstr ist ein Zeiger auf ein nullterminiertes Array von ANSI-Zeichen. NULL ist offensichtlich kein Zeiger auf ein nullterminiertes Array. Es wird wahrscheinlich versuchen, von NULL oder etwas zu lesen. In jedem Fall ist es undefined Verhalten, wird es zum Absturz Ihrer App oder lassen Sie es in unbekanntem Zustand. Warum willst du das ? Warum nicht einfach vor dem Mashalling überprüfen?
Wie kann ich ein Attribut prüfen? dann muss ich ein IntPtr marshalen. – DevDevDev
Ich denke, es wird NULL an die zugrunde liegende API übergeben, die möglicherweise keine akzeptable Eingabe ist, je nachdem, was Sie anrufen. Die meisten anständig entworfenen C (++) Code-Checks für diese Art von Sache, aber es ist am besten, zu überprüfen.
Ein NULL-Wert, wenn typisierte als Zeichenkette wird die jeweilige Sprachdarstellung NULL übersetzt werden, wenn sie in beiden Richtungen (NULL für C und null für C#)
- 1. Was passiert, wenn ich einen Zeiger zurückgebe?
- 2. Wie marschiere ich zu ANSI-Zeichenfolge über Attribut?
- 3. Was passiert mit der App rails, wenn ich rvm lösche?
- 4. Was passiert, wenn ich einen Index für eine Spalte erstelle?
- 5. Was passiert in JavaScript, wenn ich nie einen Rückruf anrufe?
- 6. In Akka, was passiert, wenn ich() einen toten ActorRef beobachte?
- 7. Was passiert, wenn ich vergesse, einen Scanset zu schließen?
- 8. Was passiert, wenn veröffentlicht
- 9. Was passiert, wenn make_shared
- 10. Was passiert, wenn ich "BufferStrategy.show()" anrufe?
- 11. Was passiert, wenn ich mehrere Male request
- 12. Was passiert, wenn der Zoowärter komplett ausfällt?
- 13. Was passiert, wenn ich eine AliasProperty anbinde?
- 14. Was Anweisung using passiert, wenn ich Injektion
- 15. Was passiert, wenn ich eine Ausnahme erstelle?
- 16. Was passiert, wenn ich web.config bearbeite?
- 17. Was passiert, wenn NSTimer in
- 18. Was passiert eigentlich, wenn ApplicationCommands.Close
- 19. Was passiert, wenn der shared_ptr-Konstruktor fehlschlägt?
- 20. Was passiert, wenn ich DOES zweimal anrufe?
- 21. Was passiert mit Sockets, wenn ich ein Netzwerkkabel abziehe?
- 22. Was passiert, wenn php.ini fehlt?
- 23. was genau passiert, wenn `enableProdMode()`
- 24. Was passiert in der Maschine, wenn ich ein Signal sende
- 25. Was passiert mit einem Applet, wenn der Browser geschlossen wird?
- 26. Was passiert, wenn kfree Funktion
- 27. Was passiert mit Anfragen, wenn Tomcat stoppt?
- 28. Was passiert, wenn Kernel delayed_work
- 29. Was passiert, wenn Öffnen fehlschlägt?
- 30. Was passiert mit PendingIntents, wenn der Benutzer die App aktualisiert?
Ich weiß nicht umgeleitet. Probieren Sie es aus und sagen Sie es uns. – JoshJordan
Ja, ich bin gerade mitten in einer unordentlichen Interop-Konvertierung, die noch eine Stunde dauern wird, bevor ich es kompilieren kann, ohne dass ich eine Menge Zeit damit verbringen muss, in einem separaten Projekt zu testen. – DevDevDev