본문 바로가기

C++10

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.