Fixed-Size Array der Struktur-Typ
wie kann ich erklären, fixed-size array von einer Struktur in C# :
[StructLayout(LayoutKind.Sequential,Pack=1), Serializable]
public unsafe struct MyStruct{
...
}
public class MyClass {
...
public fixed MyStruct myStruct[256];
}
dies führt zu CS1663 : Puffer fester Größe von struct-Typ ist nicht erlaubt, wie kann ich dies umgehen ?, Ich bevorzuge nicht zu verwenden, C# oder "Managed Collection-Daten-Struktur" zu geben, als ich brauche, um Häufig marshall dieses zu native C++
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihr C# struct verwendet nur primitive Datentypen und hat genau das gleiche layout wie Ihre Muttersprache struct in C++, können Sie rund um diese Einschränkungen mit manueller Speicherverwaltung und unsicherer code. Als ein bonus, verbessern Sie die performance durch die Vermeidung von marshalling.
Den Speicher:
Dies ist im Grunde
malloc
, so wird der zugeordnete Speicher außerhalb des Bewusstseins der GC.Übergeben Sie den IntPtr, um nativen code, als wäre es ein
MyStruct[256]
und nur der Typ IntPtr wird umgewandelt werden, nicht das Gedächtnis, es verweist. Native und managed code kann der Zugriff auf diesen Speicher direkt.Lesen/schreiben der struct in das array mit C#, C# Zeiger:
Vergessen Sie nicht,
wenn du fertig bist mit dem Speicher, um
free
es.Können Sie nicht; entsprechend der definition