Skip to content

83. volatile 변수


1. 키워드

  • volatile 변수


2. volatile 변수

  • 변수를 선언할 때 앞에 volatile을 붙이면 컴파일러는 해당 변수를 최적화에서 제외하여 항상 메모리에 접근하도록 만든다.


volatile 자료형 변수이름;
volatile int num1 = 10; // 변수를 최적화에서 제외하여 항상 메모리에 접근하도록 만듦


  • volatile로 선언한 변수는 사용할 때 항상 메모리에 접근한다.
  • 즉, 이 변수는 언제든지 값이 바뀔 수 있으니까 항상 메모리에 접근하라고 컴파일러에게 알려주는 것이다.


  • 예를 들어 다음과 같은 반복문이 있다.


int i = 0;

while (i < 10)
    i++;

printf("%d\n", i); // 10


  • 컴파일러는 이 코드를 최적화하여 while 반복문을 없애버리고 i에 그냥 10을 할당해 버린다.


int i = 10; // 반복문을 없애버리고 10을 할당

printf("%d\n", i); // 10


  • 대략 이런 모습이 된다.


  • 여기서 ivolatile로 선언하면 반복할 때마다 항상 i의 메모리에 접근해야 하므로 컴파일러는 while 반복문을 없애지 않는다.


volatile int i = 0; // volatile로 선언하여 항상 메모리에 접근하도록 만듦

// 항상 i의 메모리에 접근해야 하므로 컴파일러는 반복문을 없애지 않음
while (i < 10)
    i++;

printf("%d\n", i); // 10

References