Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- Toon Shading
- 원카페#무인카페#카페추천#카페맛집
- 메테리얼
- c++ 베이직
- 순환 리스트
- leetcode
- Unreal
- build.cs
- 폭설 #미친 날씨
- 언리얼엔진5 #언리얼 클라이언트 프로그래밍
- 헤더 경로
- Harvard
- 언리얼 엔진5 #언리얼 클라이언트 프로그래밍
- A* Algorithm
- 코드리뷰
- 언리얼
- CS50
- 툰쉐이딩
- CS
- Console
- Gas
- UE_5
- 브론즈
- topdownmove
- 오늘밤 세계에서 이 사랑이 사라진다 해도 #독후감 #오열
- 백준
- Module
- 네트워크 기초
- STL
- C++
Archives
- Today
- Total
WN_인생기록
Lvalue? Rvalue? 본문
프로그래밍 하다보면 은근 lvalue 에러를 흔하게 접하게 된다.
간단한 실수에서 비롯된 에러지만 정확하게 원인을 알아서 다음번에 안 생길 문제이다.
정확한 정의와 지식을 파악해보자
Lvalue : 이름(변수) 를 통해 접근할 수 있는 값.
Rvaule : 값 자체. 리터럴 1 은 rvalue 임. 임시 레지스터를 제외하면 특정 메모리 주소가 없음.
int a = 1; // a는 lvalue 1은 rvlaue
int b = 2; // b도 lvalue 2는 rvlaue
int c;
3 = c; // error 가 남.
리터럴 상수에 rvalue이기 떄문에 특정 메모리 주소가 없기에 주소를 할당시키려고 하면 에러가 나는것.
그래서 할당 연산자 = 를 기준으로 lvalue와 rvalue를 구분하는것이 외우기 편하다.
그래서 참조 연산자&를 사용할때 rvalue인 것들을 참조하게 되면 대부분 에러가 나는것을 항상 염려해두고 코딩을 해야한다.
실제 객체가 있는지 없는지 중요한게 바로 이때문이다. C++은 메모리 관리 때문에, 임시로 만든 것과 실제 주소가 있는 객체의 구분이 굉장히 중요하다.
이 변수가 실제 주소가 있는 값인지, 아니면 리터럴 상수나 임시로 생겨진 값인지 고려하는게 정확한 메모리 관리를 해야하는 C++ 상 중요한 맥락인거 같다.