Programming
[C/C++] 레퍼런스 리턴에서 빈 객체 처리
Trunk
2023. 4. 16. 10:34
Referance Return 상황이라면 아래와 같이 처리한다.
1. 헤더에 [std::map<int, std::vector<int>> mapData;] 선언되어 있다.
2. CPP 에 빈Vector (빈 객체)를 static 멤버로 전방 선언한 후 넘겨준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
const static std::vector<int> vecEmpty;
std::vector<int>& Foo(int key)
{
//Header : std::map<int, std::vector<int>> mapData;
auto itr = mapData.Find(key);
if (itr == mapData.end())
return vecEmpty;
return &itr->second;
}
|
cs |
메모리가 유효하지 않는 상태인지 확인이 필요합니다.
스택 메모리는 휘발성으로 메모리가 유요하지 않는 상황이 발생할 수 있습니다.
물론 운이 좋다면 메모리는 살아 있을 수 있지만, 문제는 유요하지 않는 상황이 발생할 수 있다는 점이 가장 큰 문제점 입니다. 그래서 로컬 변수 선언 방식은 사용하면 안됩니다.