컴파일러 오류 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);
}
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET 피드백
.NET은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.