본문 바로가기

프로그래밍/c++20

STL 컨테이너들의 사이즈를 한번 출력해 봤다.. #include "stdafx.h" #include #include #include #include #include #include #include #define print_sizeof(x) std::cout deque1; print_sizeof(deque1); std::queue queue1; print_sizeof(queue1); } 각 컨테이너의 요소에 넣는 타입은 어떤걸 넣어도 같은 사이즈가 나왔다.. 2011. 1. 24.
Windows CPU 효율 향상을 위한 프로그래밍시 데이터 정렬 아래의 포스팅 내용은 100%정확한 내용이라고 할수 없으며 틀린점이 있으면 지적해주시면 감사하겠습니다. Windows CPU 효율 향상을 위한 프로그래밍시 데이터 정렬 BYTE ALIGNMENT , DATA ALIGNMENT CPU에서 메모리의 데이터를 읽어올때 2바이트 메모리의 경우 (WORD 형 데이터 라던지.) 메모리의 주소가 2로 나누어 떨어지는 위치. 4바이트 메모리의 경우 4로 나누어 떨어지는 위치가 효율이 좋다고 한다. void func( void* buff ) { // 첫 주소의 1바이트 읽기 char c = *((char*)buff); // 첫 바이트 제외한 주소 2~5까지의 4바이트 데이터 읽기 int buff2 = *(int*)((char*)(buff)+1); } 위와 같은 방식으로 .. 2011. 1. 21.
Windows의 프로세스의 가상 주소 공간 32 비트 프로세스의 가상 주소 공간의 포인터값은 0x00000000 ~ 0xFFFFFFFF 까지 표현할수있다. 4GB 의 크기이다. 64 비트 프로세스의 가상 주소 공간의 포인터값은 0x00000000'00000000 ~ 0xFFFFFFFF'FFFFFFFF 까지 표현할수있다. 16EB(엑사바이트) 의 크기이다. 모든 프로세스는 자신만의 가상 주소 공간을 가지기 때문에 A 프로세스의 주소와 B 프로세스의 주소값이 같은 값을 가르키고 있어도 실제로는 다른곳을 참조하는것이다. 각 프로세스의 가상 주소의 공간은 분리가 되어있어 사용자가 직접적으로 사용할수 있는 공간이 정해진다. x86 32비트 윈도우 NULL 포인터 0x00000000 ~ 0x0000FFFF 유저 모드 0x00010000 ~ 0x7FFEFFF.. 2011. 1. 21.
GetAsyncKeyState와 GetKeyState의 차이점 출처 ) http://blog.naver.com/silver6688/60051209034 GetAsyncKeyState와 GetKeyState의 차이점 SHORT GetAsyncKeyState( int vKey ); Return Value If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the.. 2010. 9. 6.