
\_purecall과 가상 함수 테이블에 대해서 가끔씩 생각나서 정리, 테스트한 내용을 기록해본다... 에서 Derived 클래스의 객체를 하나 생성하고 그 과정을 확인한다. 4개의 함수가 존재하는 것을 볼 수 있다. 각각의 함수를 확인해보면

공부했던 걸 기록하는 차원에서 Windows에서 제공하는 유저 동기화 객체인 CRITICAL_SECTION과 SRW_LOCK의 동작 방식에 대해 간단히 알아봄.스레드 2개를 실행시킨 상황에서 서로 Enter / Leave , 상황에 따라 스레드 pause내부에서 사용하

CRITICAL_SECTION에 이어 Windows에서 제공하는 유저 동기화 객체인 SRW_LOCK의 동작에 대해서 몇 가지만 기록한다..정의되어 있는 SRWLOCK은 단지 void\* 변수 하나를 의미한다.값을 이리저리 바꾸고, 주석처리하면서 테스트했다. 단순히 포인

switch - case문을 사용할 때 컴파일러의 재량에 따라 jump table이 생성될 수 있다고 한다.그래서 테스트를 해봤다.if - else if문으로 실행을 시켰을 때 a값이 5가 맞을 때까지 비교하고 분기를 타는 cmp와 jne 의 반복으로 이루어짐을 확인

main 함수가 시작되기 전에, \_\_initterm이라는 함수 내부에서 실행되며, 생성자의 호출 후에 atExit 함수에 소멸자를 등록한다. main 함수의 종료 후에\_exit - \_common_exit함수에서 atExit에 등록해놓은 함수들을 역순으로 실행시
new 메모리 할당 및 생성자 호출 delete 소멸자 호출 및 메모리 할당 해제 ( 메모리 할당 해제 후 0x8123 ) 포인터가 nullptr일 경우에 대한 처리가 되어있다. (null체크 후 return) vs2022 사용중 ( x86, Release
> Log를 저장하는 클래스를 생성하기 전에 가변 인수 목록을 사용함수를 이용해야 할 것 같은데, 기본적인 동작의 이해를 위해 작성. ※매우 주관적인 테스트 사용/이해 정리 가변 인자 사용을 위해선 (필수 매개변수 + ...) 의 형태로 사용 valist / vas

함수 호출과 지역변수 관리용으로 사용되는 메모리 주소 공간 높은 주소 -> 낮은 주소의 순서로 사용된다. ARM64 / X86 / X64 아키텍처의 경우 스택의 기본 크기는 1MB이다 (설정을 통해 변경 가능하다.) 기본 RESERVE되는 페이지의 크기는 1MB만큼이며

\_\_purecall과 가상함수 에서 얘기했던 내용과 effective c++ 의 항목 27에서이 두 포인터의 값이 같지 않을 때가 있으며, 이때 포인터의 변위를 Derived 에 적용하여 실제의 Base를 구하는 동작이 런타임에 이루어진다고 설명한다.C++에서는 다

※ 책 "Fundamental C++ 프로그래밍의 원리"를 바탕으로 생각한 내용으로 이루어져, 틀릴 수 있음클래스가 여러개의 부모 클래스를 상속받는 구조.메모리 구조는 다음과 같이 나타나며, 특이한 점은 DerivedM 객체가 BaseA / BaseB로 사용될때의 주소

함수가 호출되고 반환되는 일련의 과정에서 정형화된 부분을 의미함수 호출 시 매개변수의 전달을 어떻게 할 것인지함수의 반환값은 어디에 저장해서 전달할 것인지 (eax)함수 반환 이유 남은 스택의 정리를 어떻게 할 것인지? (전달된 매개변수의 정리를 호출자? 피호출자? 누