프로그래밍/C++

[C++]포인터 기본 개념2

FORHAPPy 2021. 9. 24. 12:03

포인터 변수의 잘못된 참조

 

int* ptr = nullptr; 
*ptr = 10; 
 cout << *ptr << endl;

가능할 것 같지만 절대 불가능하다.

ptr은 어떠한 것도 가리키는게 없는데 거기에 10의 값을 넣는다는건 말이 안된다. 런타임 오류발생

문법적으로는 문제가 없으므로 컴파일은 된다.

 

int* pA = (int*)0x0093FD44;

이런식으로 이전의 주솟값을 가져와서 가리키는거도 오류발생.

메모리는 시시각각 바뀌므로 이미 사라진 메모리에 저런식으로 가리키지 말자.

 

더보기

터지는 상황이 왔을때는 디버그 모드의 조사식을 활용해서 어디서 오류가 났는지 추적해 나가면 된다.

함수 안에서 값이 변경되지 않으면 굳이 포인터로 받을 필요가 없다.

원본에 접근할 필요가 있는지 없는지 확인

함수 타고 올라 갈땐 F12