Gewusst wie: Anheften von Zeigern und Arrays
Das Fixieren eines Unterobjekts, das in einem verwalteten Objekt definiert wurde, hat den Auswirkungen des Anheftens des gesamten Objekts. Beispielsweise, wenn überhaupt wird Arrayelement fixiert, wird das Ganzarray ebenfalls fixiert. Es gibt keine Erweiterungen zur Sprache zum Deklarieren eines festen Arrays. Um ein Array für, deklarieren einen festen Zeiger zu dessen Elementtyp und zu Pin einer seiner Elemente.
Beispiel
Code
// pin_ptr_array.cpp
// compile with: /clr
#include <stdio.h>
using namespace System;
int main() {
array<Byte>^ arr = gcnew array<Byte>(4);
arr[0] = 'C';
arr[1] = '+';
arr[2] = '+';
arr[3] = '\0';
pin_ptr<Byte> p = &arr[1]; // entire array is now pinned
unsigned char * cp = p;
printf_s("%s\n", cp); // bytes pointed at by cp
// will not move during call
}
Ausgabe
++