본문 바로가기
컴퓨터/C

C 포인터 사용시 흔한 실수

by Begi 2019. 11. 14.
반응형

C에서 포인터를 선언하고 사용시 다음과 같이 사용했을 때 어떤 문제가 뭘까?

int *i;

*i = 10;

 

첫번째 줄에서 i의 포인터를 선언하여 포인터가 저장되는 메모리 공간을 확보했다. 하지만 i의 포인터는 확보되었지만 i의 값이 저장되는 메모리 공간은 확보되지 않았기 때문에 *i에 값을 저장하면 어디에 저장될지 알수가 없다. 중요한 시스템 영역에 10이라는 값이 저장되어 심각한 문제가 될 수도 있다.

 

위 프로그램은 다음과 같이 고쳐서 사용해야 한다.

int *i;

int k;

 

i = &k;

*i = 10;

 

k를 선언하여 값이 저장되는 메모리 공간을 확보하고 그 메모리 공간의 주소를 i에 할당하여 사용한다.

 

반응형

'컴퓨터 > C' 카테고리의 다른 글

C++ 클래스 사용 프로그램 코드 예  (0) 2020.04.23
C++ 구조체와 클래스의 차이  (0) 2020.04.23
C의 abs와 labs와 fabs 함수  (0) 2019.10.17
C의 min, max 함수  (0) 2019.10.17
[C] 포인터의 이해  (0) 2019.02.05

댓글