0.
하2염
일욜날도 열심히 공부하는 나,, 제법 멋져요...
( 현실 : 진도 밀려서 눈물 광광 중)
1. 데일리 루틴 ✅ ❌
cs 질문 공부하기
질문 : iOS 앱의 메모리 구조(힙, 스택, 코드 영역 등)와 각 영역의 특징에 대해 설명해주세요.
답변 :
iOS 앱의 메모리 구조는 일반적으로 다음과 같은 주요 영역들로 구성됩니다: 힙(Heap), 스택(Stack), 코드 영역(Code Segment), 데이터 영역(Data Segment). 각 영역은 특정한 목적을 가지고 있으며, 메모리 관리에 중요한 역할을 합니다.
1. 코드 영역 (Code Segment)
- 특징: 이 영역에는 실행할 프로그램의 기계어 코드가 저장됩니다.
- 속성: 읽기 전용으로, 실행 중에 수정되지 않습니다.
- 역할: 애플리케이션의 실행 코드를 저장하여 프로세서가 명령을 수행할 수 있게 합니다.
2. 데이터 영역 (Data Segment)
- 특징: 전역 변수와 static 변수가 저장되는 영역입니다.
- 초기화된 데이터 영역: 초기화된 전역 변수와 static 변수가 저장됩니다.
- 초기화되지 않은 데이터 영역(BSS): 초기화되지 않은 전역 변수와 static 변수가 저장됩니다.
- 속성: 읽기 및 쓰기가 가능합니다.
3. 힙 영역 (Heap)
- 특징: 동적으로 할당된 메모리가 저장되는 영역입니다.
- 속성: 런타임 동안 크기가 동적으로 변경될 수 있습니다.
- 역할: 객체 및 클래스 인스턴스가 주로 저장됩니다. 필요에 따라 메모리를 할당하고 해제할 수 있습니다.
- 메모리 관리: 자동 참조 카운팅(ARC)이나 수동으로 메모리를 관리해야 합니다.
4. 스택 영역 (Stack)
- 특징: 함수 호출 시 생성되는 지역 변수와 매개변수가 저장되는 영역입니다.
- 속성: 함수 호출과 함께 스택 프레임이 생성되고, 함수가 종료되면 스택 프레임이 해제됩니다.
- 역할: 함수 호출 시 필요한 메모리를 효율적으로 관리합니다.
- 메모리 관리: 자동으로 해제되므로 명시적으로 관리할 필요가 없습니다.
메모리 관리
iOS는 주로 **자동 참조 카운팅(ARC, Automatic Reference Counting)**을 통해 메모리를 관리합니다. ARC는 컴파일 타임에 메모리 관리 코드를 자동으로 삽입하여, 객체가 더 이상 필요 없을 때 자동으로 해제합니다.
- 강한 참조(Strong Reference): 객체의 참조 횟수를 증가시켜 객체의 생명을 연장합니다.
- 약한 참조(Weak Reference): 참조 횟수를 증가시키지 않으며, 참조 대상이 해제되면 nil로 설정됩니다. 주로 참조 순환을 방지하는 데 사용됩니다.
- 비소유 참조(Unowned Reference): 참조 횟수를 증가시키지 않으며, 참조 대상이 해제되더라도 nil로 설정되지 않습니다. 참조 대상이 항상 존재한다고 가정할 때 사용됩니다.
요약
- 코드 영역(Code Segment): 프로그램의 실행 코드를 저장합니다. 읽기 전용입니다.
- 데이터 영역(Data Segment): 전역 변수와 static 변수를 저장합니다. 읽기/쓰기가 가능합니다.
- 힙 영역(Heap): 동적으로 할당된 메모리를 저장합니다. 런타임 동안 크기가 동적으로 변경됩니다.
- 스택 영역(Stack): 함수 호출 시 생성되는 지역 변수와 매개변수를 저장합니다. 자동으로 해제됩니다.
이와 같은 메모리 구조와 관리 방식은 iOS 앱의 성능과 안정성을 보장하는 데 중요한 역할을 합니다.
1일 1커밋
📜 문제 설명
머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.
⌨️ 입출력 예
✏️ 나의 코드
import Foundation
func solution(_ n:Int, _ k:Int) -> Int {
return n * 12000 + k * 2000 - (n / 10) * 2000
}
📚 개선 코드
간단해서 개선할 것도 없슈
swift 문법 강의 듣기
일단 오늘 이만큼 들었네유..
역시 문법 보다 앱 만들기가 훨씬 잼나다 ㅎ
하지만 앱 만들기 1차는 이제 끝났고 다시 문법의 세계로,,,>///<
'TIL' 카테고리의 다른 글
240820 TIL | 정렬 알고리즘, swift의 고차함수 (0) | 2024.08.20 |
---|---|
240808 데일리 포스팅 | 메모리 제약과 메모리 제한, 콜라츠 추측 (5) | 2024.08.08 |
240717 데일리포스팅 | 새 루틴 짜기! (0) | 2024.07.17 |
240617 데일리포스팅 | 프로세스, 스레드, 몫 구하기 (0) | 2024.06.17 |
240607 데일리루틴 | 운영체제란? ios 운영체제 (2) | 2024.06.07 |