Share via


컴파일러 오류 CS1666

업데이트: 2007년 11월

오류 메시지

고정되지 않은 식에 포함된 고정 크기 버퍼는 사용할 수 없습니다. fixed 문을 사용하십시오.
You cannot use fixed size buffers contained in unfixed expressions. Try using the fixed statement.

이 오류는 고정되지 않은 클래스와 관련된 식에서 고정 크기 버퍼를 사용하는 경우에 발생합니다. 메모리 액세스를 최적화하기 위해 런타임에서 고정되지 않은 클래스를 임의로 이동하는 경우가 있으므로 고정 크기 버퍼를 사용하면 오류가 발생할 수 있습니다. 이 오류가 발생하지 않도록 하려면 문에 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); 
   } 
}