int main() {
	int *a = new int(5);
	int *b = new int(3);
	
	a = b;

	delete a;
	delete b;
}

얕은 복사. 참조만 복사한거임

위에서 문제는?

포인터 a에 적혀있던 주소값이 b가 가지고있던 주소값으로 변하게됨.

그러면 원래 들고있던 주소는 잊혀지게됨. 해제도 안된 상태에서 접근이 끊어지게된거야.

a랑 b가 똑같은 메모리공간 가리키고있어. delete a했을때 그 주소의 값이 해제됨. 그러면 나머지 delete b를 봤더니 해제가 되어있는 메모리를 또 해제하라그래..런타임에러가 뜨게됨.

int main() {
	int *a = new int(5);
	int *b = new int(3);
	
	*a = *b;

	delete a;
	delete b;
}

깊은 복사. 값을 복사한거임. 실제로 가리키고있는 값을 바꿔준거다!