영어로 읽기

다음을 통해 공유


컴파일러 오류 CS1666

고정되지 않은 식에 포함된 고정 크기 버퍼는 사용할 수 없습니다. fixed 문을 사용하세요.

이 오류는 자체적으로 수정되지 않은 인스턴스와 관련된 식에 고정 크기 버퍼를 사용하는 경우 발생합니다. 런타임은 메모리 액세스를 최적화하기 위해 고정되지 않은 인스턴스를 자유롭게 이동할 수 있으며, 이로 인해 고정 크기 버퍼를 사용할 때 오류가 발생할 수 있습니다. 이 오류를 방지하려면 fixed을 사용합니다.

예시

다음 샘플에서는 CS1666을 생성합니다.

// CS1666.cs  
// compile with: /unsafe /target:library  
unsafe struct S  
{  
   public fixed int buffer[1];  
}  
  
unsafe class Test  
{  
   S field = new S();  
  
   private bool example1()  
   {  
      return (field.buffer[0] == 0);   // CS1666 error  
   }  
  
   private bool example2()  
   {  
      // OK  
      fixed (S* p = &field)  
      {  
         return (p->buffer[0] == 0);  
      }  
   }  
  
   private bool example3()  
   {  
      S local = new S();  
      return (local.buffer[0] == 0);
   }
}