외부 라이브러리 연동 시 충돌 가능성을 낮춰줌.
const int& a = 10;
int&& b = 10;
:: 연산자
범위 밖을 의미.
지역 block과는 다름. 전역 변수를 의미.
new[]로 할당 후 delete 시 undefined behaviour
MSVC에서는 정상 작동하지만 GCC에서는 해제가 안됨.
반환값만 다른 경우 ambigous 문제가 발생하기 때문에 불가능.
void func(int a, int b = 10)
매개변수의 끝에서부터 가능.
오버로딩된 디폴트 매개변수는 ambigous 문제를 발생시킬 수 있음.
void func(int a, char c = 'a')
함수 호출 비용을 줄여서 실행속도 향상.
inline 키워드가 있다고 무조건 inline하는 것은 아님.
force inline해도 안될 수도 있음.
C99에서부터 표준으로 추가됨.
자료를 효율적으로 처리하기 위해 자료의 특성에 따라 구분, 처리, 저장하는 작업
알고리즘 - 자료를 효율적으로 처리하는 절차
header와 lib파일만 존재한다면 라이브러리를 사용할 수 있음.
source코드가 없이도 작동하므로 보안에 좋음.
속성에서 구성 형식 변경.
빌드 후 이벤트 copy "A" "B" 구조를 통해 빌드 이후 적절한 디렉토리로 원하는 파일 복사 가능.
디렉토리 이동을 위해 "\\"로 작성하는 것이 좋음.
솔루션의 참조를 이용해 버전 변경 시 자동으로 수정된 라이브러리 파일 컴파일 가능.
정적 라이브러리 - 실행파일에 추가됨.
동적 라이브러리 - 실행파일에 추가되지 않음. 런타임에 연결.
프로그램 내부 주소와 물리적 주소가 동일.
Embeded같은 곳에서 사용.
적재 시간에 적재할 물리적 위치 결정.
프로세스 종료까지 물리적 위치 고정.
MMU를 이용해 논리 주소와 물리 주소를 연결.
물리적 메모리 어디에 데이터가 적재될지는 모름.
일정한 크기로 메모리를 분리하는 방법.
논리적 단위(code, data, stack 등)로 메모리를 분리하는 방법.
stack을 제외한 모든 메모리를 공유.
Heap 역시 공유되므로 동적할당을 통해 쓰레드간의 통신이 가능.
특정 OS에 따라서는 프로세스의 모든 메모리가 반환되지 않는 경우가 존재한다는 주장이 있음.
만약 OS가 자동으로 해제한다면 일부로 해제하지 않고 프로그램을 종료함으로써 속도를 올릴 수도 있음.
그러나 개인적으론 메모리 해제는 반드시 해주는 것이 좋다고 생각함.