volatile 저장소

컴파일러의 최적화에 따라서는, 변수 N의 값을 다시 변수 N에 저장하는 대신 하나의 레지스터에 남겨 둘 수도 있다. 이런 문제를 컴파일러 최적화 옵션들을 변경하는 식으로 해결하는 것은 코드 전반의 성능에 나쁜 영향을 미칠 수 있다. 올바른 해법은 ANSI C의 volatile 저장소 한정사를 사용하는 것이다. volatile 한정사는 컴파일러에게 변수의 값이 언제라도 바뀔 수 있다고 알려주는 역할을 한다. 컴파일러는 volatile로 지정된 변수를 수정하면 그 값이 반드시 메모리에 저장되도록, 그리고 값을 읽을 때에는 반드시 메모리로부터 값을 가져 오는 식으로 코드를 생성한다.