2025/07 4

[C] 메모리 관리 원칙

메모리 관리는 누가 하느냐프로그램이 실행되기 위해서는 메모리가 필요하다. RAM(주기억장치)은 프로그램이 작업을 수행하는 공간이고, 이 공간이 넉넉할 수록 컴퓨터는 더 많은 작업을 빠르게 처리할 수 있다. 한정된 자원을 충돌없이 효율적으로 사용하기 위해서는 정교한 메모리 관리가 필요한데, 이 메모리 관리는 응용프로그램이 수행하지 않고 OS가 전담한다. OS가 메모리를 관리하는 원칙1. 메모리 관리의 주체는 운영체제이다.응용프로그램은 메모리를 직접 제어하거나 임의의 주소에 접근 불가능하다. 대신 메모리가 필요할 경우 os 에 요청한다.윈도우나 리눅스같은 운영체제는 메모리 보호 기능(Segmentation, Paging, Virtual Memory 등등) 으로 각 프로그램 메모리 공간을 격리하고 있으며, 프..

C 2025.07.12

[C] 동적 메모리 할당이란? (Dynamic Memory Allocation)

메모리 할당프로그램이 실행되기 위해서는 메모리가 필요하다. 실행 파일 자체가 메모리에 Load 되어야 실행될수 있고, 프로그램이 작업을 위해 선언하는 변수들도 모두 메모리에 할당된다. int a (4byte)double b (8byte) 라는 변수를 사용한다고 했을 때, 컴파일러가 변수 타입에 맞는 크기만큼 메모리를 할당한다.=> 이런식으로 프로그램 작성 시 미리 메모리 필요량을 알려주는 것이 "정적 할당(Static Allocation)" 동적 메모리 할당이란?프로그램 작성할 떄 (complie time or design time) 메모리 필요량을 지정하는 정적 할당과 달리, 실행중에(run time) 필요한만큼 메모리를 할당하는 기법이다. 동적 메모리 할당은 어느 경우에 필요할까?int a[50]; ..

C 2025.07.12

[C] 구조체 주소체계

구조체 포인터에 대해 알아보자.구조체는 메모리상에 연속된 블록으로 저장되고, 그 주소가 가리키는 포인터를 선언하여 접근할 수 있다. 목표1. 구조체 정의 >> 선언 >> 초기화2. 구조체 포인터 선언 및 멤버 접근3. 각 멤버의 메모리 주소와 값 확인4. 구조체 메모리 레이아웃 해석 간단한 구조체를 선언하고 메모리 구조를 살펴보자.struct Person { char name[20]; // 20bytes int age; // 4bytes float height; // 4bytes}; struct Person p1; struct Person *ptr; // 포인터 변수 초기화 ptr = &p1; // 구조체 멤버 값 설정 strcpy(p1.name, "hr..

C 2025.07.06