728x90

공부 중 메모/C,C++-기타 정보 10

volatile 변수

주로 메모리 맵 입출력(MMIO)을 제어할 때, volatile을 선언한 변수를 사용하여 컴파일러의 최적화를 못하게 하는 역할을 한다.static int foo; void bar(void) { foo = 0; while (foo != 255); } foo의 값의 초기값이 0 이후, while 루프 안에서 foo의 값이 변하지 않기 때문에 while의 조건은 항상 true가 나온다. 따라서 컴파일러는 다음과 같이 최적화한다.void bar_optimized(void) { foo = 0; while (true); } 이렇게 되면 while의 무한 루프에 빠지게 된다. 이런 최적화를 방지하기 위해 다음과 같이 volatile을 사용한다.static volatile int foo; void bar (void) ..

const int* 와 int* const의 차이점

int i; const int* cip = &i;//포인터 변수를 통해서 값을 변경하는 것을 금지. int* const ipc = &i;//포인터가 가리키는 대상을 변경하는 것을 금지. int main() { int i = 5; int j = 6; const int* cip = &i; cip = &j; // *cip = 8; 안됨 int* const ipc = &i; *ipc = 1; // ipc = &j; 안됨 } const int* const cipc = &i; //포인터가 가리키는 대상을 변경하는 것도 포인터 변수를 통해 값을 변경하는 것도 금지.

동적할당의 한계치.

32Bit OS에서의 동적영역의 한계치는 4Giga-1Byte라고 한다. (1Byte는 항상 커널이 잡고 있다고 한다.)그렇다면 64Bit에서는 8Giga-1Byte일 것 같은데, 아니다. 똑같이 4Giga-1Byte이다.64Bit OS와 32Bit OS의 호환성을 위해서 늘리지 않은것일까?따로 더 쓸 수 있게 설정하는 방법이 있다고 하는 것도 같던데 아직 정확한 정보를 찾지 못했다. 4294967295byte = 4Giga-1Byte.아래의 코드에서 더 할당하려고 하면 뻑이난다. #include #include int main() { unsigned long int num; scanf_s("%u", &num); void* p = (void*)malloc(num+4294967295); //_msize(p..

1. C/C++ 소개.

C/C++에 대한 간략한 설명 C란? 1972년에 벨 연구소의 데니스 리치(Dennis MacAlistair Ritchie, 1941.9.9~2011.10.12)가 만든 프로그래밍 언어. C++이란? 1983년에 벨 연구소의 비야네 스트롭스트룹(Bjarne Stroustrup, 1950.12.30 ~ )이 발표하고 이후 계속하여 발전한 C언어를 바탕으로 만든 프로그래밍 언어. C++라고 쓰고 읽을 때는 C plus plus 혹은 시플플이라고 읽는다. (주인장은 씨쁠쁠이라고 읽는다.) C/C++의 역사 C의 역사 C를 만든 데니스 리치는 크기는 작고 속도는 빠르며 하드웨어를 직접 제어할 수 있는 프로그램을 만들 수 있는 언어가 필요했다. 당시에 이를 충족시킬 수 있는 언어는 저급언어로 분류되는 특정 기계에..

C++에서 헤더파일과 구현파일을 구분하기.

14.11.26 추가 / 순차적 방법론을 사용하는 C가 아니라 객체지향 방법론을 사용하는 C++에서 지켜야 할 사항. (이라고 생각하는데 공부한지 너무 오래되서 가물가물하다...) 작성일 / 09.06.18 헤더파일에 넣어야 하는 것. (*.h) 구현파일에 넣어야 하는 것 (*.cpp) 클래스의 정의 인라인 멤버 함수 함수 템플릿의 선언과 정의 멤버 함수의 정의 정적 멤버 함수의 정의 정적 멤버 변수의 정의 이렇게 구분해놓을 경우 장점 - 소스 코드가 간결해져서 읽기 편해진다. - 관련된 내용으로 모여있어 필요한 부분을 찾기가 쉽다. - 소스의 관리와 재사용이 용이해진다. 구분할 떄의 규칙 1. 공유될 함수가 있는 구현 파일의 이름을 따서, 헤더 파일의 이름을 짓는다. 2. 이 헤더 파일 안에는 같은 이..

반응형