본문 바로가기

개념공부/C, C++, IDE15

[IDE] 비주얼 스튜디오 디스어셈블리 코드 확인 방법 C, C++ 코드 성능을 확인하거나 동작 방식을 로우 레벨에서 확인해야할 때 어셈블리 코드를 직접 보는 것이 도움된다. Visual Studio 에서는 컴파일된 어셈블리 코드를 확인할 수 있는 창을 제공한다.디스어셈블리 코드 창 사용 설정디스어셈블리코드 창을 사용하기 위해선 먼저 설정이 필요하다. Visual Studio에서 도구 > 옵션 > 디버깅 > 일반 > '주소 수준 디버깅 사용' 을 체크한다. 디스어셈블리 코드 확인 방법작성한 코드에 중단점을 걸고 디버그 모드로 실행한다. 중단점은 F9 키로 설정 가능하며, 디버그 모드는 F5 키를 누르면 된다. 코드가 컴파일 이후 실행되고, 중단점에 제어가 걸려 있을 때 디스어셈블리 창을 실행한다. 디스 어셈블리 창은 디버그 > 창 > 디스어셈블리를 클릭하면 .. 2024. 7. 8.
[C++] 타입 추론 auto, for loop auto auto 키워드 auto는 변수의 자료형을 대신에 사용하는 키워드 입니다. 자료형에 auto를 사용하면, 컴파일 시간에 변수의 자료형을 추론합니다.int x = 1; // 변수 x 의 자료형을 int로 선언해야 함auto x = 1; // 변수 x의 자료형을 컴파일 시간에 int로 추론함 auto 키워드의 장점 auto 키워드는 2가지 장점이 있습니다. 첫번째는 긴 변수명을 대체할 수 있다는 점입니다.vector>> str = Print(); // 자료형이 길죠?auto str = Print(); // 컴파일 시간에 Print 함수의 반환 자료형을 추론하므로,// 긴 자료형 작성이 불필요합니다. 두번째 장점은, 코드 수정이 용이합니다. 함수의 출력 자료형이 변경되더라도 함수가 호출된 모든 부분을 찾아 .. 2024. 7. 4.
2차원 Vector Sort 방법 2D Vector Sort 코딩 문제를 풀기 위해서 2차원 Vector를 Sorting 해야 하는 경우가 있다. 특정 rule을 적용해 원하는 결과를 얻기 위해서 Vector가 Sorted 상태여야 하는 경우가 그렇다. 보통 Interval로 표현되는 문제들이 대표적인 예다. Cpp에서는 헤더를 통해 기본적인 vector sort 기능을 제공한다. 기본 API는 1D vector를 입력받는 걸로 설계되어 있고, 2D vector나 정렬 조건을 customize 하고 싶은 경우가 생긴다. 아래는 2D vector를 1st idx 기준으로 sorting 하는 함수이다. 코딩 문제를 풀다보면 때떄로 필요하니 익혀놓자. (그냥 머리에 심어놓는게 편하다.) bool cmp(vector &v1, vector &v2.. 2023. 8. 10.
[C언어] 변수의 유효 범위 (variable scope) 아래는 문제가 있는 코드로 정적검증을 돌려보면 높은 위험성의 코드로 분류될 수 있다. 무엇이 문제인지 모르겠다면 변수의 유효 범위에 대한 공부가 필요하다. 변수의 유효 범위란 OS가 변수의 메모리를 할당 및 유지해주는 영역, 범위를 말한다. 유효 범위를 벗어나면 OS에서는 변수의 메모리를 해제한다. 지역 변수의 유효 범위 지역 변수는 선언된 블록 내에서만 유효하다(메모리가 할당된 채 유지된다). 블록은 중괄호 {} 내 영역이다. 함수도 하나의 블록이다. 위 그림에서 pVar1 포인터 변수는 main {} 블럭과 if {} 블럭에서 모두 유효하다. 이는 메모리가 할당되어 있는 것이고, 조사식을 통해 변수의 값을 확인할 수 있다. 하지만 Var2 변수는 if{} 블럭에서만 유효하고 main {} 블럭에서는 .. 2023. 7. 3.
Bitwise Operation, Operator (비트연산) Reference : https://en.wikipedia.org/wiki/Bitwise_operation Bitwise operation is fast and simple action. because it is directly supported by the processor. On low-cost processors, bitwise operations are substantially faster than division, several times faster than multiplication, somtimes significantly faster than addition. (really??) Bitwise Operator NOT(bitwise complement) NOT 0111 -> 1000, NO.. 2023. 1. 17.
[C++ STL] unordered_map std::unordered_map This data structure is an associative container the contains key-value pairs with unique keys. Search, insertion, and removal of elements have average constane-time complexity Internally, the elements are not osorte in any particular order, but organized into buckets. Properties Associative container Unique keys Reference : https://en.cppreference.com/w/cpp/container/unordered.. 2023. 1. 16.