34.5 잘못된 포인터 사용
값을 직접 저장
포인터는 메모리 주소를 저장하는 용도이므로 값을 직접 저장하면 안된다.
#include <stdio.h>
int main()
{
int *numPtr = 0x100; // 포인터에 0x100을 직접 저장
printf("%d\n", *numPtr); // 0x100은 잘못된 메모리 주소이므로 실행 에러
return 0;
}
잘못된 주솟값을 저장하는 경우
int *numPtr = 0x100;
포인터에 직접 0x100을 저장했을 때, 메모리에서 0x100은 잘못된 주솟값이기 때문에 제대로 실행되지 않는다.
이 상태에서 numPtr을 역참조하여 메모리 주소에 접근하려 하면 에러가 발생한다. (⭐ 운영체제는 프로그램이 잘못된 메모리 주소에 접근했을 때 에러를 발생시킴)
실제 존재하는 메모리 주소는 직접 저장 하는 경우
실제로 존재하는 메모리 주소라면 포인터에 직접 저장할 수 있다.
보통 임베디드 시스템이나 마이크로 프로세서에서 제공하는 메모리 주소를 사용할 때 포인터에 직접 저장하기도 한다.
int *numPtr = 0x00CCFC2C; // 실제로 존재하는 메모리 주소라면 저장할 수 있음
출처
https://dojang.io/mod/page/view.php?id=280
Author And Source
이 문제에 관하여(34.5 잘못된 포인터 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shuajjjjj/잘못된-포인터-사용저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)