Comment : épingler des pointeurs et des tableaux
L’épinglage d’un sous-objet défini dans un objet managé a pour effet d’épingler l’objet entier. Par exemple, si un élément d’un tableau est épinglé, la totalité du tableau est également épinglée. Il n’existe aucune extension pour le langage pour déclarer un tableau épinglé. Pour épingler un tableau, déclarez un pointeur épingle à son type d’élément, et épinglez un de ses éléments.
Exemple
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
}
++