포인터 앨리어싱이 무엇인지 알아보고,
이에 대한 해결책을 알아보자.
포인터 복수개가 하나를 가리키고 있는 경우를 포인터 앨리어싱이라고 한다.
#include <stdio.h>
int main() {
int a = 11;
int* pa1 = &a; // a를 pa1, pa2 2개가 가리킨다.
int* pa2 = &a;
printf("%d\\n", a);
printf("%d\\n", *pa1);
printf("%d\\n", *pa2);
*pa2 = 22; // pa2를 바꿔도, a, pa1이 모두 바뀐다.
printf("%d\\n", a);
printf("%d\\n", *pa1);
printf("%d\\n", *pa2);
return 0;
}
하나가 해제된다면?
둘다 NULL이 된다.
하나의 포인터에 객체(에를 들어 문자열) 있다면?
이 문자열은 댕글링 포인터가 되어버리고, 해제가 불가능해진다.
같은 메모리를 서로 다른 타입으로 접근하는 경우
예외 char*는 어떤 데이터 타입도 안전하게 접근 가능하다.