반응형

포인터를 배우기전 대부분 C언어 타입과 변수 선언에 대해서 배우게 된다.

그리고 연산을 위해 초기값을 0으로 선언하기도 한다.

(포인터 에 관해서 아래 참고)

https://ansan-survivor.tistory.com/1237 

 

[C언어] 포인터란? 포인터에 대해 쉽게 이해하기. (포인터 변수 사용하기, 포인터로 값 변경하기,

(알아두기) 컴퓨터는 32비트와 64비트를 많이 사용한다. 이는 1번 처리에 사용할 수 있는 메모리의 크기이다. 만약 32비트(4byte) PC라면, 8 byte를 할당해도 저장할 수 있는 공간은 4byte 뿐이다. 나머지

ansan-survivor.tistory.com

 

하지만 포인터의 초기값 선언은 매우 중요하고, 잘못하면 PC 또는 하드웨어에 큰 영향을 미친다.

 

보통 포인터 변수의 선언은 아래와 같이 한다.

int * ptr;

그러나 위와 같이 변수 선언하면 컴퓨터는 메모리 어딘가에 저장하여 쓰레기값이 출력된다.

컴파일러 마다 다른데, 비주얼스튜디오 같은경우는 애초에 경고로 초기값을 선언하라고 친절하게 알려준다.

쓰레기 값은 메모리상의 아무 주소나 가리키게 되는데, 아래와 같이 PC를 구동하데 핵심적인 역할을 하는 OS나 핵심프로그램의 영역에 들어가서 메모리 값을 바꿔버리면 PC의 구동에 큰 영향을 미치게 된다.

그러나 옛날엔 큰 문제였지만, 다행이도 최근 컴퓨터나 OS들은 이를 방지하기 위해 다양한 접근 제한등의 조치가 취해져있다.

 

하지만 임베디드 시스템과 같은 작은 규모의 환경에서는 이러한 선언은 위험하므로 포인터설정의 초기화를 잘 지정해야 한다.

 

그래서! 결론은 포인터를 처음 선언할 때는 아래와 같이 한다.

그래야 선언한 포인터변수가 아무곳도 가리키지 않기 때문에 나중에 필요한 부분을 가리키게 만들어서 사용할 수 있다.

(안전한 코드)

반응형
int * ptr = NULL;

int * ptr = 0;

 

 

 

반응형

+ Recent posts