포트폴리오/[IoT 기반 피지컬 AI 교육일지]

[ 5일차 복습 ] 프로젝트 안내 & 동적할당, 구조체 정리

개발자혜콩 2026. 2. 10. 16:50

1. 오늘 학습내용

 ① 프로젝트 개요 & 개발 방향


② 프로젝트 설계 원칙

  • 구조체 필수 사용
  • 메모리 최적화보다 단순하고 명확한 구조 설계에 집중
    • 메모리 비용 ↓
    • 개발 시간·인건비 ↑
  • 메모리를 더 사용하더라도
    • 계산 복잡도를 낮춰
    • 전체 개발 시간 단축하는 것이 유리
  • 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 버전 관리