Programming 7

[C/C++] std::shared_ptr

공용 포인터 (shared_ptr) 는 참조 카운트가 0의 상태가 되면 메모리에서 해제되도록 설계된 클래스이다. 사용 목적 : heap 할당 메모리를 해제를 하지 않아 발생하는 "메모리 릭"을 최소화 할 수 있다. 하지만 순환 참조가 되어버리면 해제할 수 없으므로 코딩에 주의를 기울여야 한다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 #incl..

Programming 2023.04.16

[Debugging TIP] 추적점을 사용하여 출력 창에 로그 출력

https://learn.microsoft.com/ko-kr/visualstudio/debugger/using-tracepoints?view=vs-2019 추적점을 사용하여 정보 기록 - Visual Studio (Windows) 코드를 수정하거나 중지하지 않고 출력에 정보를 로그하는 추적점을 설정합니다. 중단점 설정의 작업 확인란 아래에 출력 문자열을 지정하면 됩니다. learn.microsoft.com 중단점(F9)를 이용하여 디버깅을 하면 브레이킹으로 테스트할 때 방해가 되는 경우가 있습니다. 그렇다고 추적(Trace)을 위해 코드 추가하고 다시 빌드하는 귀찮은 상황이라면 한번정도 사용해보길 추천하는 방법입니다. 출력창에 내가 원하는 정보를 출력하여 디버깅할 때 도움을 받을 수 있습니다.

Programming 2023.04.16

[C/C++] 레퍼런스 리턴에서 빈 객체 처리

Referance Return 상황이라면 아래와 같이 처리한다. 1. 헤더에 [std::map mapData;] 선언되어 있다. 2. CPP 에 빈Vector (빈 객체)를 static 멤버로 전방 선언한 후 넘겨준다. 1 2 3 4 5 6 7 8 9 10 11 12 13 const static std::vector vecEmpty; std::vector& Foo(int key) { //Header : std::map mapData; auto itr = mapData.Find(key); if (itr == mapData.end()) return vecEmpty; return &itr->second; } Colored by Color Scripter cs 메모리가 유효하지 않는 상태인지 확인이 필요합니다...

Programming 2023.04.16

[C/C++] std::initializer_list - 컬럼 여러 개에 보상을 넣을 때 처리

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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 // 템플릿(메타) 데이터에 컬럼으로 여러개의 보상이 주어졌을 때 // column : RewardId_1, RewardId_2, RewardId3 // 반복문을 어떻게 처리할 것인가? (for, while) // 1) 데이터 로드 단계에서 컨테이너에 담아주기 void LoadData() { std::vector rewards; rewards.push_back(RewardId_1); rewards.push_back(RewardId..

Programming 2023.04.16

[C/C++] std::map - 데이터(Value) 찾은 후 삭제

Data delete after find. erase() 함수는 iterator(위치)를 리턴하는데 이것을 받아 처리하는 방식이 가장 흔하게 사용하는 방식이다. 알고리즘 사용하는 방법이 가장 최신이며 효율적인 방법으로 보이지만 상황에 맞게 사용하면 된다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 std::map mapTemp; // TEST CASE 01 : 입력 방법 2가지 mapTemp.ins..

Programming 2023.04.16