공부/C++ \C#

volatile 키워드

Lero God 2018. 5. 11. 15:41

사용 목적


첫째, volatile 키워드로 선언한 포인터는 컴파일러가 최적화를 하지 않습니다. 코드 최적화를 하면 안되는 임베디드나 멀티 쓰레드 환경에서 많이 씁니다. 


둘째, volatile 키워드로 선언하면 해당 메모리 공간으로 전송되는 데이터는 캐쉬되지 않습니다. 이 뜻은 메모리에 직접 연산을 한다는 것입니다. 



사용 예시


포인터가 가르키는 개체를 volatile로 선언 할 땐 변수 형식 지정자 앞에 선언합니다.


1
volatile char* ptr;



포인터에 저장된 실제 주소를 volatile로 선언 할 땐 변수 형식 지정자 뒤에 선언합니다.


1
char* volatile ptr;