일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Algorithm
- C
- 2020.02.23
- 2020.03.16
- 독서
- ppt
- 백준
- ComputeShader
- stretch force
- Conjugate Gradient
- class
- graphics
- game jam
- UNORDERED_MAP
- 학습용
- dedicatedserver
- ue5
- Til
- listenserver
- C++
- 알고리즘
- Overloading
- 프로그래머스
- 참조자
- 논문
- 알고리즘연습
- sparse matrix
- TIP
- rendering pipeline
- Implicit method
- Today
- Total
목록C (2)
OSgood의 개발일기

참조자와 포인터의 차이점을 간단히 정리하고자 한다. 이 포스팅은 내가 가끔 헷갈릴 때 보기위해서 아주 간단히 메모용으로 적어놓는 것이기 때문에 좀 더 자세한 내용을 원하시는 분들은 다른 포스팅을 참고하는 것이 좋을 것 같다. 그러므로 최대한 간단히 개념정도만 적고 사용법은 포스팅하지 않겠다. 참조자 int name1 =100; int &name2 = name1; 참조자는 별칭을 만든다고 생각하면 될 것 같다.(참조자는 선언과 동시에 무엇을 참조하고 있는지 초기화를 해야한다.) 포인터 int name1 =100; int *name2 =&name1; 포인터는 어떤 변수의 주소값 자체를 저장하여 그 변수를 가르키고 있다고 생각하면 된다.

Class의 디폴트 대입 연산자는 멤버 간의 Shallow copy로 되어 있다. 이 때 클래스의 멤버들이 동적할당을 이용하고 있지 않으면 큰 문제가 발생하지 않는다. 하지만 만약 복사하는 값이 주소값이라면 Shallow copy는 큰 문제를 야기하고 런타임 에러를 발생시킬 수도 있다. 왜냐하면 동적할당으로 얻은 메모리를 이용할 때 Shallow copy를 하게 되면 메모리 공간은 그대로이고 이것을 가르키는 포인터는 양쪽 객체에서 똑같이 가지고 있기 때문에 한 쪽 객체의 destructor에서 메모리를 해제할 경우 다른 쪽에서의 접근은 실뢰할 수 없는 메모리 공간이 된다. 그림을 보면 이해가 더 쉬울 것 같아서 간단히 그림을 만들어 보았다. 위와 같이 Shallow copy를 하게 되면 한쪽은 소멸시켰을..