📝 2025 C언어 특강 내용 기록
😼 Github : https://github.com/mad-cost/C-structures-basics
💾 메모리 영역 4가지
프로그램이 실행되면
메모리는 크게 4가지 영역으로 나뉩니다.
Stack / Heap / Data / Code
각 영역을 아주 간단히 정리하면 다음과 같습니다.
Stack
Stack 영역은 함수 호출 시 사용되는 공간으로
지역 변수와 매개변수가 저장됩니다.
함수가 종료되면 자동으로 메모리가 해제 된다.
Heap
Heap 영역은 사용자가 필요에 따라
동적으로 메모리를 할당하는 영역입니다.
C언어를 배우다 보면
포인터와 구조체 그리고 malloc에서 한 번쯤 멈추게 되는데요 🤣
바로 그 malloc으로 할당되는 메모리가
이 Heap 영역에 저장됩니다.
동적 메모리는 Heap 영역에 할당되며,
할당만 하고 해제하지 않으면
더 이상 사용되지 않는 메모리가
계속 남아 있는 Leak(메모리 누수) 현상이 발생합니다.
할당도, 해제도 전부 개발자 책임
Data
Data 영역은 전역 변수와 정적 변수가 저장되는 영역입니다.
프로그램 시작 시 할당되고
프로그램 종료 시 해제됩니다.
Code
실행할 프로그램의 명령어,
즉 기계어 코드가 저장되는 영역입니다.
텍스트 영역(Text 영역)이라고도 불립니다.
🎯 정리
Stack, Data, Code 영역은
코드에 의해 자동으로 할당과 해제가 이루어지지만,
Heap 영역은 사용자가 직접 관리해야 한다는 점이
가장 큰 차이입니다.
그래서 이번 특강에서는
- malloc을 이용한 동적 할당
- 구조체를 자유롭게 다루는 연습
- Linked List를 코드 레벨에서 직접 구현
하는 것이 목표입니다.
📋 Day 1. 요구사항 정리
다음은 배열을 이용한 Stack 구현 프로그램이다.
사용자는 메뉴를 통해 스택에 데이터를 push / pop / 확인 / 종료할 수 있다.
⚠️ 기본 조건
- main()에 있는 서비스 로직을 메서드로 분리할 것
- 전역 변수 사용 금지 (포인터의 이해도를 높이기 위해)
- 스택의 최대 크기는 10개
----- stack -----
1.push 2.pop 3.확인 4.종료
메뉴 선택 : 1
1️⃣ push 기능
사용자가 입력한 값을 스택에 저장한다. [최대 10개]
스택이 가득 찬 경우 "스택이 가득차 있습니다" 출력
----- stack -----
1.push 2.pop 3.확인 4.종료
메뉴 선택 : 1
저장할 데이터 :
2️⃣pop 기능
스택의 마지막 데이터를 하나 제거한다.
스택이 비어 있는 경우 "꺼낼 데이터가 없습니다" 출력
1.push 2.pop 3.확인 4.종료
메뉴 선택 : 2
마지막 데이터를 스택에서 꺼냈습니다
3️⃣ 확인 기능
1.push 2.pop 3.확인 4.종료
메뉴 선택 : 3
스택에는
1 2 3 4 5 이 저장되어 있습니다
4️⃣ 종료 기능
1.push 2.pop 3.확인 4.종료
메뉴 선택 : 4
프로그램 종료
📚 다음 시간까지
- 동적 메모리 할당 (malloc, free)
- 구조체 / 자기 참조 구조체
- Linked List 자료구조
'해피 코딩 > Algorithm' 카테고리의 다른 글
| [Day 3] LinkedList의 데이터 입력과 출력 (0) | 2026.01.12 |
|---|---|
| [Day 2] 자료구조의 확장 / Stack에서 ArrayList까지 (0) | 2026.01.02 |
| [이론] 유니온 파인드 너무 쉬운데? (5) | 2024.12.24 |
| [백준 10986] '나머지 합' 가장 쉽게 이해하기 JAVA (1) | 2024.12.21 |
| [백준 1934] 문제로 이해하는 유클리드 호제법 JAVA (2) | 2024.12.16 |