1. 오늘 학습내용
① 프로젝트 개요 & 개발 방향
- 프로젝트 일정
- 2/13(금) : 프로젝트 초안 발표
- 2/27(금) : 프로젝트 최종 발표
- 동적 할당 기반 시스템 구현 시 에러 다수 발생 가능
- 미리 각오 필요
- 프로젝트 주제 참고 자료
👉 https://www.reddit.com/r/C_Programming/comments/jjrahp/what_projects_do_you_recommend_after_learning_the/
② 프로젝트 설계 원칙
- 구조체 필수 사용
- 메모리 최적화보다 단순하고 명확한 구조 설계에 집중
- 메모리 비용 ↓
- 개발 시간·인건비 ↑
- 메모리를 더 사용하더라도
- 계산 복잡도를 낮춰
- 전체 개발 시간 단축하는 것이 유리
- GitHub 사용
- 버전 관리 경험 쌓기
③ 동적 메모리 할당
- 동적 할당 메모리는 Heap 영역에 생성
- malloc() 함수 사용 시 주의 필요
- 메모리 누수 위험 매우 큼
- malloc() 사용 규칙
- 반드시 free()로 해제
- malloc() 호출 횟수 = free() 호출 횟수
free(pi); free(pd);
- exit()로 강제 종료 ❌
- return으로 자연 종료 ⭕ (권장)
④ 구조체 & 포인터
- 구조체 멤버 접근 방법
- 구조체 변수 : .
- 구조체 포인터 : ->
- typedef (★★★ 매우 중요)
- struct 이름 생략 가능
- 새 자료형 이름은 대문자로 작성
- 코드 가독성 및 생산성 향상
⑤ 자료구조 — 링크드 리스트
- head는 항상 고정
- current 포인터로 리스트 순회
- head 주소를 current에 대입하여 이동
- head 하나로 모든 노드(a, b, c)에 접근 가능
⑥ 시스템 / 개발 환경 관련
- 아두이노 vs 라즈베리파이
- 라즈베리파이
- 운영체제 존재
- 멀티스레드 가능
- 서버 동작 가능
- 라즈베리파이
- 터미널 제어
- Ctrl + Z : 프로세스 백그라운드 이동 (주의)
- Ctrl + C : 강제종료
- 백그라운드로 이동시 해결방법
- job 명령어 입력 시 번호 목록 확인가능 : fg %n (포그라운드로 복귀)
⑦ C언어 개념 정리
- ASCII 코드
- 사람이 읽을 수 있는 문자 데이터
- Binary 데이터
- 음악, 사진, 동영상 등 미디어 파일
- extern
- 새로 만들지 않고
- 다른 파일에 존재하는 변수 참조
- static
- 외부 접근 차단
- 파일 내부 전용 변수/함수 정의
2. 헷갈렸던 거
- extern과 static의 정확한 차이
- malloc() 후 free() 해제 시점
- 링크드 리스트에서 head와 current 역할 구분
3. 나중에 다시 볼 키워드
- malloc() / free() / 메모리 누수
- 구조체 포인터 (->)
- 링크드 리스트
- extern / static
- GitHub 버전 관리
'포트폴리오 > [IoT 기반 피지컬 AI 교육일지]' 카테고리의 다른 글
| [ 7일차 복습 ] Doubly Linked List & Queue & Deque (0) | 2026.02.11 |
|---|---|
| [ 6일차 복습 ] 노드 구조체와 메모리 관리 (0) | 2026.02.10 |
| [ 4일차 복습 ] 포인터 응용 · 변수 영역 · 다차원 배열 (0) | 2026.02.10 |
| [ 3일차 복습 ] 함수 · 배열 · 포인터 기초 (0) | 2026.02.10 |
| [ 2일차 복습 ] C언어 개념과 Vi 편집기 사용 (0) | 2026.02.04 |