본문 바로가기

C++ 메모리 사용의 궁금증 1. new나 malloc으로 메모리 n바이트를 요청했을때 실제로 n바이트를 얻게 될까? 프로그램이 요청한 메모리 + 관리용 정보 a) struct x1{ char c1; long l; char c2; }; b) struct x2{ long l; char c1; char c2; }; a) c 컴파일러는 보통 4바이트로 메모리를 관리하기 때문에 오프셋 0 : char형 1바이트 + 오프셋 2~4 : 세개의 채움 바이트 오프셋 4~7 : long형에 할당 , 오프셋 8 : char형 1바이트 ,오프셋 9~11 : 세개의 채움 바이트(채움 : 관리용 정보) b) 연속적인 메모리 할당, 오프셋 0~3 : long형 할당, 오프셋 4: char형 할당, 오프셋 5:char형 할당 2) 여러 컨테이너들의 객체당 기.. 더보기
C++ 두 가지 메모리 관리 전략 1. 범용 할당 : 호출자가 요청한 임의의 크기의 메모리 블럭을 제공할 수 있다. 장점은 유연하나 여러가지 단점을 가지고 있다. a) 성능 - 유연한만큼 더 많은 일을 해야 한다. b) 단편화 - 블록들을 할당하고 해제하다보면, 할당되지 않는 작은 메모리 조각들이 여기 저기 흩어져서 존재하게 된다. 2. 고정크기할당 : 항상 동일한 고정된 크기의 블록을 반환한다. 덜 유연하나 속도가 빠르고 범용할당에서와 같은 종류의 단편화가 생기지 않는다. C++ 메모리 관리 수준에는 4가지 수준의 계층 방식이 있다. 1. 운영체제의 커널 2. 컴파일러의 기본 실행시점 라이브러리 3. 표준 컨테이너들과 할당자들 4. 사용자 정의 컨테이너와 사용자 정의 할당자 더보기
리눅스 시스템 프로그래밍 수업자료 리눅스 시스템 프로그래밍 수업자료 더보기