실수 표현시 소수점 위치를 고정하지 않는 것
범위가 한정적인 고정 소수점에 비해 범위가 넓음.
- Bit State 표현
2 진법
부호부 / 정수부 / 소수부
정규화
부호부
음수 1 , 양수 0
지수부바이어스 표현법 사용
가수부왼쪽부터 채운 옮긴 뒤 0으로 채움
지수의 음양 표현이 정수의 음양표현 의미와 다르기 때문에 사용
지수가 0 이라면 2^0 = 1 로 1이 기본값이 되는 현상을 피하기 위하여 사용한다.
지수부가 모두 0 인 경우
정수부를 0 으로 지수를 -126 으로 표현
모든 비트가 0 이라면 0
지수부가 모두 1인 경우
가수부가 모두 0 인경우 INF
가수부가 하나라도 1인 경우 NaN
실제 지수 범위 -126 ~ 127
구조상 가수부 크기가 일정하기 때문에 지수가 가수부의 크기보다 커진다면 오차가 발생한다.
문자들이 모여져 있는 집합
- C++ 표준 라이브러이에서 string 클래스 자료구조 제공.
- NULL 종료 문자열로 문자열 끝을 판별 할 수 있음.
Copy Pointer 를 의미한다.
- 참조 연산자로 초기화시 주소 연산자 생략
- 직접 접근시 간접 연산자 생략
- 포인터 영역 마련후 초기화 되는 변수 주소가 포인터 영역에 써지게 되는 방식
참조 객체의 메모리 공간 확부 및 주소 복사 포인터
컴파일 타임에 초기화 된 값을 토대로 타입을 추론하여 적절한 타입으로 변경하는 자료형
- 선언 즉시 초기화
- 참조 타입 사용시 키워드 앞 참조 연산자 작성
- #define
- #include
- #pragma once
- #if , #ifdef, #ifndef
- 메모리 영역이 프로세스에게 독립적으로 부여
- 타 프로세스 해당 메모리 영역 침범 불가
- 메모리 부여시 운영체제, 프로세스가 절반씩 사용
- malloc
- size 를 인자로 받음.
- 할당한 주소 void * 반환
- stdlib.h 필요
- 할당 가능한 영역 없을시 nullptr 반환
- new
- 요소 개수를 받음
- 생성자 호출 가능
- 인자로 받은 타입으로 할당한 주소 반환
- 할당 가능한 영역 없을시 std::bad_alloc 예외 발생
- free
- 주소를 인자로 받음
- delete
- 변수명을 인자로 받으며 배열 해제시 [] 작성
- 인자로 받은 타입 확인 후 소멸자 호출
- malloc 과 new 요청
힙관리자가 할당받은 메모리 분배후 부여받은 주소 , size 를 할당 내역에 기록
- free , delete 요청
할당 내역에 기록해 놓은 주소와 size 토대로 검사후 메모리 회수
힙관리자 : 힙 영역 관리, 프로세스 시작시 OS 에서 가상 메모리를 할당 받음
- 동적 배열 할당 요청
내부에서 malloc 호출 시 인덱스 요소 개수를 저장할 추가로 메모리를 할당 받음.
반환시 인덱스 0 번째 주소를 반환하기 위해 추가받은 메모리 크기를 더한 주소를 받음.
- 해제
힙 관리자의 할당 내역을 통하여 추가로 받은 메모리 크기를 뺀 후 인덱스 요소 개수 파악
요소 개수만큼 소멸자 호출
- 정의
메모리 공간 확보- 선언
해당 메모리 공간이 있다는 것을 알림
컴파일러가 필요할 시 생성자와 소멸자가 명시되지 않았을 때 제공하는 생성자 · 소멸자
- 명시되지 않은 모든 생성자 · 소멸자에 대하여 제공시
- 불필요한 Code 영역 차지
- 객체 생성 , 소멸시 생성자와 소멸자를 확인하는 오버헤드 발생
메모리의 주소를 가리키는 객체로 간접 접근을 통한
메모리 낭비와 지역성이 다른 메모리에 접근이 가능하다.
- 주소와 타입 정보를 가짐.
- 메모리 주소에 타입 정보를 기반으로 접근.
- 원천 타입이 아닐 경우 혼란 발생
구조체
public
와 클래스private
는 객체 지향 프로그램의 도입과 기존 라이브러리의 호환성을 보존하기 위해 나누어져 있다.
맴버 변수는 변수 타입의 크기 배수 일 때 CPU 의 메모리 접근 횟수가 최소화됨.
배치시 /Zp8 기준 변수의 타입 크기와 8중 더 작은 쪽이 최소배수.
기본 생성자 , 기본 소멸자 , 복사생성자 , 복사 대입 연산자 , 이동생성자 , 이동 대입 연산자
멤버의 값을 복사하여 생성하는 생성자
인자는 const Type &
실행순서
- 명시적
- 초기화 리스트
- 선처리 영역의 부모 , 클래스 타입의 맴버 기본 생성자 호출
- 코드블럭 실행
- 암시적
- 부모 , 클래스 타입 타입의 맴버 복사 생성자 호출
- 기본 맴버 타입일 경우 복사 실행
대입 연산자의 오버로딩
- 인자
const Type
반환형자기자신
- 실행 순서
- 부모의 복사 대입 연산자 호출
- 맴버가 기본 타입일 경우 메모리 복사
- 맴버중 const 지정자나 참조 타입이 있을 시 에러 발생