일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- rendering pipeline
- 알고리즘
- numerical method
- 알고리즘연습
- ppt
- Implicit method
- 학습용
- 독서
- graphics
- 프로그래머스
- UNORDERED_MAP
- Til
- sparse matrix
- C
- 2020.03.16
- Algorithm
- oprerator
- class
- 2020.02.23
- ComputeShader
- Conjugate Gradient
- stretch force
- 논문
- 백준
- game jam
- algorithm #알고리즘 #백준
- Overloading
- 참조자
- C++
- TIP
- 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를 하게 되면 한쪽은 소멸시켰을..