반응형
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 |
댓글