Ich verwende Shared Memory für Interprozesskommunikation in einer unsicheren Klasse. Ein Teil des Speichers ist reserviert, um ein festes Array von int zu halten.unsafe C#: Wie kann ich ein int [] von einem Zeiger auf einen bereits vorhandenen Speicherort erstellen?
Grundsätzlich habe ich eine Methode, die den gemeinsamen Speicher einrichtet. Etwas wie folgt aus:
private int* sizePtr;
private ???* arrayPtr;
void SetupMemory(byte *pointerToSharedMem)
{
this.sizePtr = (int*)pointerToSharedMem;
pointerToSharedMem += sizeof(int);
this.arrayPtr = (???*)pointerToSharedMem;
pointerToSharedMem += sizeof(int) * FixedSizeOfArray;
}
Wie muss ich den Zeiger erklären, dass ich eine Eigenschaft verwenden können
public int[] MyArray
{
get
{
return some magic with this.arrayPtr;
}
}
ETA: Wenn möglich, möchte ich structs vermeiden, und ich möchte auf jeden Fall Vermeiden Sie es, Daten zu kopieren. Ich hoffte auf eine Art von Cast-Konstrukt, um einen Zeiger auf die Daten im Shared Memory zu verwenden, so dass die Daten sofort verwendet werden können (d. H. Ohne zu kopieren).
Es muss ein Zeiger sein. Dieses Array wird sehr oft verwendet und das Kopieren von Daten ist zu viel Geld (es sei denn, es gibt natürlich keinen anderen Weg). – Harald