반응형
1. 메모리 구조
2. 데이터 영역
- 전역, static 변수가 저장됨(rw 영역)
- 초기화 되지 않으면 bss영역에 저장
- 프로그램이 종료되면 반환
3. 스택 영역
- 일반적인 변수가 저장되며 함수 블록 단위로 저장
- 하나의 블록은 인자, 일반변수, 리턴값으로 저장
- 함수가 종료되면 LIFO로 함수 블록이 반환
- 런타임 시간에 크기 변경 불가
4. 힙 영역
- 동적 메모리 영역
- 할당 후 해제가 반드시 필요함
- 읽고 쓰는 속도가 스택에 비해 약간 느림
5. 메모리 관리 방법
일반 적인 경우 스마트 포인터를 사용
- delete를 해주지 않아도 자동으로 메모리 해제됨
배열 형태 사용 필요시 vector를 사용
6. 메모리 누수 찾는 방법(팁)
- valgrind 프로그램명
7. 언제 스택? 힙?
- 데이터량이 mb 이하이면 스택(array 사용)
std::array<int, 1000> ar;
- 데이터량이 mb 이상이면 힙(vector 사용)
std::vector<cat, 1000000> ve;
- 왜?
- 스택은 위에서부터 그냥 쌓기 때문에 힙보다 빠름
참고
반응형
'C++ > C++' 카테고리의 다른 글
[C++]스마트 포인터 (0) | 2021.03.09 |
---|---|
[C++]LR value 및 최적화 (0) | 2021.03.09 |
[C++]빌드 프로세스 (0) | 2021.03.09 |
[C++]연산자 오버로딩 (0) | 2021.03.09 |
[C++]기초 내용 정리 (0) | 2021.03.09 |