08.22 - TIL

김혁·2025년 8월 22일

TIL

목록 보기
2/84

오늘의 코드카타

풍선 터트리기

  • 메모이제이션을 활용한 인덱스별 누적 최소값 구하기
    -> 문제 풀이

오늘의 공부

학습한 강의

  • NetMode, NetConnection, NetDriver
  • NetRole

정리 노트

오늘의 CS

new와 malloc의 차이점은 무엇인가

  • 공통점으로 메모리를 동적 할당하는 방법인데, malloc은 c에서 사용하던 메모리 동적 할당 방법이고, new는 c++에서 추가된 메모리 동적 할당 방법이다.
  • new
    • 생성자 자동 호출
    • 자동 타입 캐스팅
    • 객체의 크기가 자동으로 지정되는데, 내부 변수의 크기뿐만 아니라 객체 생성 및 초기화 과정을 거치기 때문에 추가적인 오버헤드의 크기랑 패딩만큼의 크기가 할당됨
  • malloc
    • 생성자가 자동으로 호출되지 않음
    • 기본적으로 (void*) 타입으로 할당되서, 수동 타입 캐스팅 필요
    • 메모리 할당 크기를 직접 지정해줘야 하고, 딱 맞는 크기의 메모리가 할당됨

스택과 힙의 차이점이 무엇인가 (프로세스의 메모리 영역 구조)

  • 스택
    • 지역 변수, 함수의 매개변수, 반환되는 주소값 등이 저장되는 영역
    • LIFO(후입선출) 방식으로 높은 주소 값에서 낮은 주소 값으로 메모리 할당
    • 영역 크기는 컴파일 때 결정됨
    • 사용자에 의해 동적 메모리 할당이 일어나는 영역
    • 데이터의 할당 및 해제가 무작위 순서로 일어나기 때문에, 메모리 단편화가 발생할 수 있음
    • 영역 크기는 런타임 때 결정됨
  • 스택 오버플로우가 발생하는 이유
    • 무한 재귀 호출 : 끝없이 호출하는 무한 재귀에 빠질 때 발생
    • 지나치게 큰 지역 변수 : 함수 내에서 매우 큰 배열 같은 지역 변수를 선언할 경우, 변수가 스택에 할당되면서 한번에 너무 많이 차지하여 오버플로 발생 가능
  • 스택 오버플로우 해결법
    1. 종료 조건을 명확하게 한다.
    2. 재귀 대신 반복문 사용
    3. 과도한 스택 사이즈보다는 동적 메모리 할당
    4. 컴파일러 옵션을 통한 스택 사이즈 조절

스택과 큐의 차이점이 무엇인가 (자료 구조)

  • 스택
    • LIFO(후입선출) 방식으로 동작하는 자료 구조
    • 사용하는 예시 : 함수 호출 시 호출 스택, 실행 취소(Undo) 기능
    • FIFO(선입선출) 방식으로 동작하는 자료 구조
    • 사용하는 예시 : 네트워크 패킷 처리
  • 스택 2개로 큐 만들기
    • 하나를 push 전용 스택으로 push 시에는 해당 스택에 push
    • 하나를 pop 전용 스택으로 pop 시에는 해당 스택에 pop
    • pop 요청 시, pop 전용 스택이 비어있으면 push 전용 스택에서 전부 pop 스택으로 옮겨야 함
profile
게임 개발자를 향해..

0개의 댓글