如何:钉住指针和数组
固定在宿主的对象定义的子对象的固定整个对象的效果。例如,如果数组的任何元素使用锁定,然后整个数组也被锁定。 没有扩展名去声明固定数组的语言。 若要固定数组,请声明钉住的指针到其元素类型,并锁定元素之一。
示例
代码
// 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
}
Output
++