SlideShare a Scribd company logo
6. Value, Pointer, Reference
박민근
[C++ lab] 6. value,pointer,reference
Value
• 가장 일반적인 객체(값)의 생성
• 생성된 영역의 스택 메모리 공간에 할당
• 생성 영역에서 벗어나면 메모리에서 자동 해제

• 함수안의 지역 변수 -> 함수가 반환되면 메모리 해제
• 클래스 멤버 변수 -> 클래스가 소멸되면 같이 해제
• 전역 변수 -> 프로그램이 종료될 때 해제

함수의 인자나, 배열에 대입할 때, 값의 복사(Copy)가 일어 난다
Value 소멸
Value 복사
Value 복사
Value(값) 복사
partyMember[3]

객체의 멤버 변수
값만 복사 된다
soeun

0 CCharacter
1 CCharacter
2 CCharacter

wonHyo

jinSang
Value(값) 복사 결과
partyMember[3]

soeun

0 CCharacter
1 CCharacter
2 CCharacter

wonHyo

jinSang

값만 복사(COPY) 했을 뿐, 서로간에 아무런 관계가 없다
서로는 완전히 별개의 객체이다.

총 객체의 개수 = 6개
Value(값) 복사
복사 생성자
값이 복사될때는 기본 생성자가 아닌,
복사 생성자가 호출 되며, 값이 복사 된다.
[C++ lab] 6. value,pointer,reference
Pointer
전역 힙(Heap) 메모리 공간에 동적 생성
영역을 벗어나도 해제 되지 않는다

• 포인터 변수의 실제 값은 할당된 메모리의 시작 주소

• 할당된 메모리를 해제하지 않을 경우, 메모리 누수(Leak)가 발생한다

함수의 인자나, 배열에 대입할 때, 실제 메모리 주소만을 복사한다.
Pointer 실습
Reference(참조) 복사
partyMember[3]

객체의 주소값만
복사된다
pJinWoo

0 CCharacter*
1 CCharacter*
2 CCharacter*

pJongChan

pYoonSung
Value vs Pointer
VS
Value

Pointer

실제 데이터의 복사

참조 주소를 복사

일반 데이터 타입

포인터

타겟과 원본이 각각 별도의 메모
리 공간을 차지함

타겟과 원본이 같은 메모리 주소
를 참조함

원본이 사라져도 관계 없음

원본 데이터가 사라지면, 포인터
는 모두 무효 포인터가 된다.
포인터(주소) 복사
partyMember[3]

객체의 주소값만
복사된다
pJinWoo

0 CCharacter*
1 CCharacter*
2 CCharacter*

pJongChan

pYoonSung

이것들은 전부 바로가기(포인터)
그럼 실제 데이터는 어디 있는가??
동적 할당

C의 malloc() 과 같음
C

C++

차이

malloc

new

클래스, 구조체등의 타입에 맞는 사이즈 자동 할당
생성자를 자동 호출

free

delete

소멸자를 자동 호출
메모리를 가르키는 포인터
메모리를 가르키는 포인터
pJinWoo

pJongChan

pYoonSung

실제 메모리가 할당된 데이터
포인터(주소) 복사
포인터 주의점(1)

Player1에 Player2의 주소를 덮어씀
이제 두개의 포인터가 같은 주소를 가르킴
Player1을 해제할 포인터가 없어짐
두 개의 delete가 사실 같은 메모리를 두번 해제하는 버그 발생
포인터 주의점(2)
포인터 변수의 값(주소)이 복사 되어 지역 변수가 생성된다.
함수내의 지역 변수의 복사가 일어날 뿐이다.

함수에서 벗어나면 사라지는 지역 변수이다.

이 포인터에 저장된 값은 변경되지 않는다
함수내의 로컬 변수가 변경된 것 뿐이기 때문이다.
[C++ lab] 6. value,pointer,reference
레퍼런스

• 존재 하는 객체를 참조(레퍼런스) 한다.

• 포인터와 달리 항상 존재하는 값만을 참조한다. (NULL이 될 수 없다)
• 이미 존재하는 값을 복사가 아닌 참조하는 것으로, 별명(Alias)라고도 한다
• 새롭게 할당하거나 복사하지 않는다.
[C++ lab] 6. value,pointer,reference
Value <-> Pointer

• Value 변수 앞에 & : 주소값을 반환. Value -> Pointer

• 포인터 변수 앞에 * : 포인터에 저장된 값을 반환. Pointer -> Value

More Related Content

PDF
[Swift] Functions
PPTX
골때리는 자바스크립트 발표자료
PDF
파이썬 모듈 패키지
PDF
10장 문자열 클래스와 파일 클래스
PDF
파이썬 유용한 라이브러리
PDF
10장 문자열클래스와파일클래스
PDF
(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
PPTX
Jupyter notebok tensorboard 실행하기_20160706
[Swift] Functions
골때리는 자바스크립트 발표자료
파이썬 모듈 패키지
10장 문자열 클래스와 파일 클래스
파이썬 유용한 라이브러리
10장 문자열클래스와파일클래스
(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
Jupyter notebok tensorboard 실행하기_20160706

Similar to [C++ lab] 6. value,pointer,reference (18)

PPTX
Ec++ 3,4 summary
PDF
Effective modern cpp item18, 19
PPTX
Effective c++(chapter3,4)
PPTX
Effective c++ 2
PPTX
이펙티브 C++ 공부
PPTX
Api design for c++ ch3 pattern
PDF
Effective c++ chapter1 2_dcshin
PPTX
Api design for c++ pattern
PPTX
이펙티브 C++ 스터디
PPTX
파이썬 함수 이해하기
PPTX
Jupyter notebook 이해하기
PPTX
PPT
강의자료4
PDF
Java 변수자료형
PDF
Java_02 변수자료형
PDF
More effective c++ chapter3 4
PPTX
Effective c++ 1~8장
PDF
More effective c++ chapter1 2_dcshin
Ec++ 3,4 summary
Effective modern cpp item18, 19
Effective c++(chapter3,4)
Effective c++ 2
이펙티브 C++ 공부
Api design for c++ ch3 pattern
Effective c++ chapter1 2_dcshin
Api design for c++ pattern
이펙티브 C++ 스터디
파이썬 함수 이해하기
Jupyter notebook 이해하기
강의자료4
Java 변수자료형
Java_02 변수자료형
More effective c++ chapter3 4
Effective c++ 1~8장
More effective c++ chapter1 2_dcshin
Ad

More from MinGeun Park (20)

PDF
[데브루키] 게임 엔진 아키텍쳐_3장_게임을 위한 소프트웨어 엔지니어링 기초
PDF
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
PDF
게임 엔진 아키텍쳐_1장 요약 by 알콜코더(초중급 게임 개발자 스터디 데브루키)
PDF
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
PDF
[Cs study] 코딩인터뷰 완전 분석 #6
PDF
[Cs study] 코딩인터뷰 완전 분석 #5
PDF
[Cs study] 코딩인터뷰 완전 분석 #3
PDF
[Cs study] 코딩인터뷰 완전 분석 #2
PDF
[Cs study] 코딩인터뷰 완전 분석
PPTX
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
PDF
[데브루키] 이벤트 드리븐 아키텍쳐
PPTX
[데브루키 언리얼 스터디] PBR
PDF
[데브루키 언리얼 스터디] 스터디 안내 OT
PPTX
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
PDF
[데브루키] Color space gamma correction
PPTX
유니티 팁&트릭 Unity Tip & Trick
PPTX
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
PPTX
[RAPA/C++] 1. 수업 내용 및 진행 방법
PPTX
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
PPTX
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
[데브루키] 게임 엔진 아키텍쳐_3장_게임을 위한 소프트웨어 엔지니어링 기초
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
게임 엔진 아키텍쳐_1장 요약 by 알콜코더(초중급 게임 개발자 스터디 데브루키)
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키] Color space gamma correction
유니티 팁&트릭 Unity Tip & Trick
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
[RAPA/C++] 1. 수업 내용 및 진행 방법
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
Ad

[C++ lab] 6. value,pointer,reference