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 |
메모리가 유효하지 않는 상태인지 확인이 필요합니다.
스택 메모리는 휘발성으로 메모리가 유요하지 않는 상황이 발생할 수 있습니다.
물론 운이 좋다면 메모리는 살아 있을 수 있지만, 문제는 유요하지 않는 상황이 발생할 수 있다는 점이 가장 큰 문제점 입니다. 그래서 로컬 변수 선언 방식은 사용하면 안됩니다.
'Programming' 카테고리의 다른 글
[C/C++] std::shared_ptr (0) | 2023.04.16 |
---|---|
[C/C++] 정적 라이브러리 (Lib) (0) | 2023.04.16 |
[Debugging TIP] 추적점을 사용하여 출력 창에 로그 출력 (0) | 2023.04.16 |
[C/C++] std::initializer_list - 컬럼 여러 개에 보상을 넣을 때 처리 (0) | 2023.04.16 |
[C/C++] std::map - 데이터(Value) 찾은 후 삭제 (0) | 2023.04.16 |