SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Move Semantics
쿠재아이
김재경
아주 짤막하게 알아봅시다…
☆도입된 이유☆
(기존에 있던 문제점)
Vector의 동적 크기 증가
평범 평범한 코드
Vector의 동적 크기 증가
음… 뭔가 이상한데?
Vector의 동적 크기 증가
Vector
배열 기반 컨테이너라 크기를 증가시키기 위해서 재할당이 필수
그래서 재할당 과정을 보면…
Vector의 동적 크기 증가
v a Int[1000]
1. 크기가 더 큰 새로운 Vector를 만든다
Vector의 동적 크기 증가
v a Int[1000]
2. 이곳에 기존 Vector에 있던 원소들을 모두 복사한다
(복사 생성자 호출, Deep Copy 발생)
Int[1000]
a
Vector의 동적 크기 증가
v
해제된 공간
3. 기존 벡터안에 있던 원소들을 모두 해제한다
(소멸자 호출)
Int[1000]
a
Vector의 동적 크기 증가
v
4. 새로운 벡터를 기존 벡터 이름에 연결한다
Int[1000]
a
Vector의 동적 크기 증가
1. createMyVec() 은 내부에서 임시로 비어있는 MyVec 객체를 하나 만들고 (vec2라 가정)
2. createMyVec() 함수 안에서 정의된 일을 수행한 후,
3. vec2를 vec 에 대입
3번 과정의 내부를 좀 더 들여다 봅시다.
3-1) createMyVec() 함수가 반환할 때 우선 넘겨받아야 할 vec 에 빈 자리가 있어야 하므로,
3-2) vec이 가지고 있던 엘리먼트들을 파괴합니다. vec 안에 무엇이 들어있던 간에 파괴됩니다.
3-3) vec 내부 확보가 끝나면, vec2 내의 엘리먼트를 vec 으로 하나 하나 복사합니다.
3-4) 복사를 모두 마치면, vec2는 소멸되어야 하므로, vec2 내부에 들어있는 엘리먼트를 파괴합니다.
3-5) vec2 의 엘리먼트들이 모두 소멸되고 난 후에, vec2를 소멸합니다
정말 비효율적이네요 ^^
이런 문제를 해결하기 위해 도입된 것이
Move Semantics
이동을 하고 싶은데 복사를 해야 돼…
Move Semantics를 알기 전에 알아야 할 개념
R-Value Reference
L-Value, R-Value?
C 표준에서는 이 둘을 아래와 같이 정의
An L-Value is an expression that may appear on the left or on the right hand side of an assi
gnment, whereas an R-Value is an expression that can only appear on the right hand side of
an assignment
대입식 (assignment)에서 왼쪽 또는 오른쪽에 나올 수 있는게 L-Value (left-hand side value의 약자)
오른쪽에만 나올 수 있는게 R-Value (right-hand side value의 약자)
L-Value, R-Value?
L-Value
어떤 값을 저장할 수 있고, & 연산자를 통해 해당 메모리의 주소값을 가져올 수 있는 표현식
R-Value
값을 저장할 수 없으며, L-Value 에 값을 저장하기 위해 임시로 생성된 표현식
& 연산자를 써서 주소값을 가져오는 것도 불가능
L-Value, R-Value?
C++에서 레퍼런스 타입을 반환하는 함수에 대한 호출은 L-Value를 반환하고,
이를 제외한 함수는 모두 R-Value를 반환
foo() 함수 호출은 L-Value를 반환하고, L-Value는 & 연산자를 통해 주소값을
가져올 수 있다
R-Value Reference?
L-Value 레퍼런스는 우측값으로 L-Value만 받을 수 있다
(const L-Value 레퍼런스는 L-Value, R-Value 둘 다 가능)
R-Value 레퍼런스는 우측값으로 R-Value만 받을 수 있다
R-Value Reference?
R-Value Reference를 써보자
메모리 이동을 하기 위해
Shallow Copy 구현
Shallow Copy를 구현 했기
때문에 other.p에 널 포인터를
대입
R-Value Reference를 써보자
Vector가 재할당 될 때 메모리가 생성되지 않는다!
R-Value Reference를 써보자
a와 b를 push 후 더 이상 사용하지 않는다면 이렇게도 가능
메모리 할당이 객체가 생성될 때만 일어났다
std::move
인자를 R-Value Reference로 리턴
전 코드는 Move 생성자를 호출하기 위해 사용
Vector의 동적 크기 증가
(Move 생성자 사용)
v a Int[1000]
1. 크기가 더 큰 새로운 Vector를 만든다
v
nullptr
a Int[1000]
2. 이곳에 기존 Vector에 있던 원소들을 모두 이동시킨다
(Move 생성자 호출, Shallow Copy 발생)
a
Vector의 동적 크기 증가
(Move 생성자 사용)
v
해제된 공간
Int[1000]
3. 기존 벡터안에 있던 원소들을 모두 해제한다
(소멸자 호출)
a
Vector의 동적 크기 증가
(Move 생성자 사용)
Vector의 동적 크기 증가
4. 새로운 벡터를 기존 벡터 이름에 연결한다
v Int[1000]
a
C++ 탄생 28년 만에 Ctrl+X 탄생
Vector의 동적 크기 증가
Vector 내부에 R-Value&&로 연산자가 오버로딩 되어 있는걸로 보아
vec의 원소를 해제하고 내부의 포인터를 이동시키지 않을까…?
멍청했던 점
Move 생성자는 복사 생성자와 다른 특별한 생성자가 아니다
메모리 이동을 하기 위해 생성자를 하나 더 추가한 것뿐
그래서 복사 생성자와 Move 생성자를 똑같이 만들면
멍청했던 점
복사 생성자와
멍청했던 점
Move 생성자의 구분이 없어진다
상식적으로 코드가 똑같은데 당연한 결과…
한 가지 궁금점
생성자와 복사 생성자는 컴파일러가 default로 만들어주는데…
Move 생성자는?
암묵적인 Move 생성자 정의 이슈
기타 레퍼런스 정보들
Perfect Forwarding
이것도 사전지식이 좀 필요하다
MSDN R-Value Reference 부분을 보면…
The compiler treats a named rvalue reference as an lvalue and an unnamed
rvalue reference as an rvalue
컴파일러는 이름이 있는 R-Value Reference를 L-Value로, 이름이 없는 R-Value Ref
erence를 R-Value로 처리합니다.
R-Value Reference 처리
R-Value Reference 처리
f 함수에서 block은 named rvalue reference
따라서 함수 내부에서는 R-Value로 처리
f 함수는 unnamed rvalue reference를 리턴
왜인지는 저도 몰라요…
Argument Deduction
R-Value Reference에 L-Value를 대입할 수 없다
하지만 템플릿을 사용하면 R-Value Reference에 L-Value를 대입할 수 있다
Argument Deduction
Argument Deduction
템플릿은 컴파일 타임에 함수를 생성
이 때 Argument Deduction(인자 추론)을 진행
그런 다음 컴파일러는 매개 변수 형식을 추론된 템플릿 인자로 대체할 때
reference collapsing rules를 적용
Argument Deduction
reference collapsing rules 적용
std::move
전달 인자가 L-Value면 _Ty&&이 L-Value Reference로 바뀌고
전달 인자가 R-Value면 함수 내부적으로 L-Value로 처리되기 때문에
타입 캐스팅을 해줘서 리턴
리턴한 이름없는 R-Value Reference를 R-Value로 사용
Argument Deduction
PrintRefValue의 Value가 내부에서 L-Value로
처리되기 때문
Argument Deduction
L-Value로 전달한 것도 R-Value Reference로
실행
함수 호출시 좌측값과 우측값을 구분하여 처리
할 수 있는 방법은 없나?
std::forward
std::forward는 템플릿 프로그래밍에서 사용
원래 L-Value인 것은 L-Value Reference로
원래 R-Value인 것은 R-Value Reference로
캐스팅해주는 역할을 한다
std::forward
결과적으로 L-Value Reference를 리턴
printRefValue(nValue)일 때
Argument Deduction
std::forward
결과적으로 R-Value Reference를 리턴
printRefValue(323)일 때
Argument Deduction
Perfect Forwarding
factory 함수의 인자가 int&, int&으로 만들어져
R-Value를 받는 Z를 생성 못함
Z를 생성하려면 오버로딩 해야 함
Perfect Forwarding
템플릿 함수 인자로 R-Value Reference를 설정하고
std::forward 함수를 이용해 해결
결론
신기술이 도입되면
1. 이전에 어떤 문제점이 있는지 파악하고
2. 문제를 해결하기 위해 어떤 개념을 사용했으며
3. 결과적으로 어떤 의미로 도입이 됐는지 생각하고
4. 구현
5. 영어 공부 합시다…
6. 백업 잘 합시다…
Q/A

Más contenido relacionado

La actualidad más candente

Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
흥배 최
 
More effective c++ chapter1,2
More effective c++ chapter1,2More effective c++ chapter1,2
More effective c++ chapter1,2
문익 장
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11
흥배 최
 

La actualidad más candente (20)

C++11
C++11C++11
C++11
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
 
C++11 1
C++11 1C++11 1
C++11 1
 
9 swift 클로저1
9 swift 클로저19 swift 클로저1
9 swift 클로저1
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
C Language For Arduino
C Language For ArduinoC Language For Arduino
C Language For Arduino
 
Parallel objects
Parallel objectsParallel objects
Parallel objects
 
8 swift 중첩함수
8 swift 중첩함수8 swift 중첩함수
8 swift 중첩함수
 
More effective c++ chapter1,2
More effective c++ chapter1,2More effective c++ chapter1,2
More effective c++ chapter1,2
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshin
 
Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉
 
C++ Advanced 강의 4주차
 C++ Advanced 강의 4주차 C++ Advanced 강의 4주차
C++ Advanced 강의 4주차
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
 
Std bind
Std bindStd bind
Std bind
 
W14 chap13
W14 chap13W14 chap13
W14 chap13
 
Function & Closure about Swift
Function & Closure about Swift Function & Closure about Swift
Function & Closure about Swift
 

Destacado

[Dev rookie] 이상적인 게임에 관하여(13.11.30)
[Dev rookie] 이상적인 게임에 관하여(13.11.30)[Dev rookie] 이상적인 게임에 관하여(13.11.30)
[Dev rookie] 이상적인 게임에 관하여(13.11.30)
해강
 
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
Min-soo Park
 
[Gpg1권 박민근] 4.8 가려진 객체의 제외 기법 (오브젝트 오클루젼 컬링)
[Gpg1권 박민근] 4.8 가려진 객체의 제외 기법 (오브젝트 오클루젼 컬링)[Gpg1권 박민근] 4.8 가려진 객체의 제외 기법 (오브젝트 오클루젼 컬링)
[Gpg1권 박민근] 4.8 가려진 객체의 제외 기법 (오브젝트 오클루젼 컬링)
MinGeun Park
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim
 
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
Sang Don Kim
 

Destacado (12)

구문과 의미론(정적 의미론까지)
구문과 의미론(정적 의미론까지)구문과 의미론(정적 의미론까지)
구문과 의미론(정적 의미론까지)
 
[Dev rookie] 이상적인 게임에 관하여(13.11.30)
[Dev rookie] 이상적인 게임에 관하여(13.11.30)[Dev rookie] 이상적인 게임에 관하여(13.11.30)
[Dev rookie] 이상적인 게임에 관하여(13.11.30)
 
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
 
Dynamic Semantics
Dynamic SemanticsDynamic Semantics
Dynamic Semantics
 
What’s new in c++11
What’s new in c++11What’s new in c++11
What’s new in c++11
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
 
elasticsearch
elasticsearchelasticsearch
elasticsearch
 
[Gpg1권 박민근] 4.8 가려진 객체의 제외 기법 (오브젝트 오클루젼 컬링)
[Gpg1권 박민근] 4.8 가려진 객체의 제외 기법 (오브젝트 오클루젼 컬링)[Gpg1권 박민근] 4.8 가려진 객체의 제외 기법 (오브젝트 오클루젼 컬링)
[Gpg1권 박민근] 4.8 가려진 객체의 제외 기법 (오브젝트 오클루젼 컬링)
 
Samsung-OSS-Conference-20140916
Samsung-OSS-Conference-20140916Samsung-OSS-Conference-20140916
Samsung-OSS-Conference-20140916
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
 
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
 
C++11
C++11C++11
C++11
 

Similar a Move semantics

[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
NAVER Engineering
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
min woog kim
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
devCAT Studio, NEXON
 

Similar a Move semantics (20)

R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R Basics
 
자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초
 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2
 
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
 
Swift 세미나
Swift 세미나Swift 세미나
Swift 세미나
 
[C++ Korea] Effective Modern C++ Study item 24-26
[C++ Korea] Effective Modern C++ Study item 24-26[C++ Korea] Effective Modern C++ Study item 24-26
[C++ Korea] Effective Modern C++ Study item 24-26
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
 
[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2
 
Windows reversing study_basic_5
Windows reversing study_basic_5Windows reversing study_basic_5
Windows reversing study_basic_5
 
모던 C++ 정리
모던 C++ 정리모던 C++ 정리
모던 C++ 정리
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713
 

Más de QooJuice

리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
QooJuice
 
캐릭터 애니메이션
캐릭터 애니메이션캐릭터 애니메이션
캐릭터 애니메이션
QooJuice
 
Screen space ambient occlusion
Screen space ambient occlusionScreen space ambient occlusion
Screen space ambient occlusion
QooJuice
 
UE4 Garbage Collection
UE4 Garbage CollectionUE4 Garbage Collection
UE4 Garbage Collection
QooJuice
 
Compute shader
Compute shaderCompute shader
Compute shader
QooJuice
 
Game programming patterns 2
Game programming patterns 2Game programming patterns 2
Game programming patterns 2
QooJuice
 
Game programming patterns
Game programming patternsGame programming patterns
Game programming patterns
QooJuice
 
코루틴(Coroutine)
코루틴(Coroutine)코루틴(Coroutine)
코루틴(Coroutine)
QooJuice
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
 
Direct x 12 초기화
Direct x 12 초기화Direct x 12 초기화
Direct x 12 초기화
QooJuice
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)
QooJuice
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
QooJuice
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향
QooJuice
 
Segmentation and Paging
Segmentation and PagingSegmentation and Paging
Segmentation and Paging
QooJuice
 

Más de QooJuice (18)

리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
 
캐릭터 애니메이션
캐릭터 애니메이션캐릭터 애니메이션
캐릭터 애니메이션
 
Screen space ambient occlusion
Screen space ambient occlusionScreen space ambient occlusion
Screen space ambient occlusion
 
UE4 Garbage Collection
UE4 Garbage CollectionUE4 Garbage Collection
UE4 Garbage Collection
 
Compute shader
Compute shaderCompute shader
Compute shader
 
Game programming patterns 2
Game programming patterns 2Game programming patterns 2
Game programming patterns 2
 
Game programming patterns
Game programming patternsGame programming patterns
Game programming patterns
 
Picking
PickingPicking
Picking
 
코루틴(Coroutine)
코루틴(Coroutine)코루틴(Coroutine)
코루틴(Coroutine)
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
Direct x 12 초기화
Direct x 12 초기화Direct x 12 초기화
Direct x 12 초기화
 
행렬
행렬행렬
행렬
 
벡터
벡터벡터
벡터
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
 
부팅
부팅부팅
부팅
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향
 
Segmentation and Paging
Segmentation and PagingSegmentation and Paging
Segmentation and Paging
 

Move semantics