안전하지 않은 클래스에서 프로세스 간 통신을 위해 공유 메모리를 사용하고 있습니다. 메모리의 일부는 고정 된 int 배열을 보유하도록 예약되어 있습니다.안전하지 않은 C# : 기존 메모리 위치에 대한 포인터에서 int []를 어떻게 만들 수 있습니까?
기본적으로 공유 메모리를 설정하는 방법이 있습니다. 이런 식으로 뭔가 :
private int* sizePtr;
private ???* arrayPtr;
void SetupMemory(byte *pointerToSharedMem)
{
this.sizePtr = (int*)pointerToSharedMem;
pointerToSharedMem += sizeof(int);
this.arrayPtr = (???*)pointerToSharedMem;
pointerToSharedMem += sizeof(int) * FixedSizeOfArray;
}
내가
public int[] MyArray
{
get
{
return some magic with this.arrayPtr;
}
}
ETA 나는 속성을 사용할 수 있도록 포인터를 선언해야 할 방법 : 가능하면, 내가 구조체를 피하기 위해 싶습니다 나는 확실히 원하는 데이터 복사를 피하십시오. 데이터를 즉시 사용할 수 있도록 (즉, 복사하지 않고) 공유 메모리의 데이터에 대한 포인터를 사용하기 위해 어떤 종류의 캐스트 구조가 필요했습니다.
포인터 여야합니다. 이 배열은 매우 자주 사용되며 데이터를 복사하는 것은 페널티가 너무 많습니다 (물론 다른 방법이 없다면). – Harald