본문 바로가기
프로그래밍 언어/C++

[C/C++] 포인터 없이 메모리 직접 접근

by 까망 하르방 2025. 7. 13.
반응형

메모리 직접 접근

C/C++에서는 포인터 활용하여 메모리 접근 가능 하지만
임베디드 환경에서는 포인터 없이 직접 접근하는 경우가 많다.
(이는 특정 주소에 "모드 설정" or "데이터 값" 처리하기 때문)


예를 들어
0x2000_0000 번지에 값을 "10" 설정한다고 해보자.

0x20000000 = 10;



위와 같은 형태는 상수 = 상수로 당연히 처리 되지 않는다.

(*)0x20000000 = 10;



주소 값 형태로 하여 타입 캐스팅 하였지만
할당 받을 메모리 크기가 지정되어야 한다.
보통 양수로 값을 처리하기 때문에
아래와 같이 표현할 수 있다.

(unsigned int*)0x20000000 = 10;



마지막으로 컴파일러 최적화 처리를 방지하기 위해
아래 형태로 사용되는 편이다.

(volatile unsigned int*)0x20000000 = 10;



메모리 직접 접근 하는 방법은
메모리 레이아웃을 잘 이해하지 못한 경우에는
오동작을 유발할 수 있기 때문에 레이아웃 구성을 이해하고 사용해야 한다.

 

📌 [C/C++] Volatile 키워드

 

[C/C++] Volatile 키워드

volatile 키워드란?• 컴파일러 최적화(optimization)에서 제외한다.• 레지스터에 값을 사용하지 않고 항상 메모리에 접근 참조• 명확한 표준이 없어 컴파일러마다 차이가 있긴 하다.  volatile 필요

zoosso.tistory.com

반응형

'프로그래밍 언어 > C++' 카테고리의 다른 글

[C++] enum class와 enum  (9) 2025.06.29
[C++] 임시(temporary) 객체  (22) 2025.04.26
[C++] 소멸자 함수  (9) 2025.04.25
[C/C++] 메모리 영역(스택, 힙, 데이터 영역)  (7) 2025.04.20
[C/C++] 비트 필드 구조체  (8) 2025.03.23

댓글