태그: 메모리
9편
-
iOS·Swift 내부 구조 심화 — ARC, 증인 테이블, UIKit/SwiftUI
Swift의 ARC와 weak·unowned, 프로토콜 증인 테이블과 existential 비용, 값·참조 타입과 COW, UIKit과 SwiftUI의 상태 모델, MainActor·DI 같은 프로덕션 패턴을 내부 구현과 설계 트레이드오프 관점에서 정리합니다. [weak self]가 필요한 경우와 아닌 경우, @StateObject 수명 함정도 다룹니다.
-
C 동적 메모리 심화 — malloc 내부·정렬·단편화·커스텀 할당자·프로덕션 패턴
glibc ptmalloc과 jemalloc이 malloc/free를 어떤 자료구조로 구현하는지 살펴보고, aligned_alloc과 max_align_t 정렬 규칙, 내부·외부 단편화가 악화되는 패턴, 범프 할당자와 고정 블록 풀 설계를 설명합니다.
-
C 언어에서 버그가 생기는 자리: 메모리 레이아웃, 포인터 aliasing, UB, 링킹
C 언어의 메모리 모델·포인터·동적 할당부터 시스템 프로그래밍까지 실무 관점으로 정리합니다. C23 표준, gcc·clang 활용법, undefined behavior 함정 회피 전략을 포함합니다.
-
C++ static 함수 정리: 클래스 static 멤버, 파일 스코프 static, 내부 링키지와 ODR
함수에 붙는 static은 클래스 static 멤버 함수와 파일 스코프 static 함수라는 전혀 다른 두 뜻을 가집니다. this가 없는 멤버 함수, 내부 링키지와 익명 네임스페이스 비교, 헤더의 static 정의가 ODR과 코드 크기에 주는 영향을 예제로 봅니다.
-
Python 자료형: 리스트·딕셔너리·튜플·세트 사용법과 CPython 내부 구조, 성능 차이
Python 내장 자료형 정리. 리스트, 딕셔너리, 튜플, 세트의 사용법과 선택 기준, 성능 비교, CPython에서 list와 dict의 메모리 구조, 자주 하는 실수와 고급 활용 패턴을 다룹니다.
-
C++ 스택 오버플로우 크래시: 깊은 재귀·큰 지역 배열 진단과 스택 크기 조정
깊은 재귀나 큰 지역 배열 때문에 세그폴트로 죽는 스택 오버플로우를 진단하고, 재귀를 반복문이나 명시적 스택으로 바꾸거나 데이터를 힙으로 옮기는 방법, ulimit과 링커 옵션으로 스택 크기를 조정하는 법까지 다룹니다.
-
C++ vector reserve vs resize: capacity와 size의 차이와 쓰임
vector의 reserve는 capacity만 늘리고 size는 그대로 두지만, resize는 요소를 실제로 만들고 초기화해 size를 바꿉니다. 이 차이 때문에 reserve 뒤 인덱스로 접근하거나 resize 뒤 push_back을 하면 생기는 버그와 재할당 횟수 차이를 예제로 보여 줍니다.
-
C++ 커스텀 Allocator: 메모리 풀·스택·추적 할당자와 PMR
C++ STL Allocator 인터페이스로 메모리 할당을 커스터마이징하는 방법을 메모리 풀, 스택, 추적 할당자 예제와 PMR(polymorphic_allocator)로 정리합니다. 할당자 비교, 전파 정책, 정렬 함정까지 다룹니다.
-
C++ 메모리 정렬: Alignment·Padding과 False Sharing이 성능에 미치는 영향
C++ 구조체에 패딩이 생기는 이유와 멤버 순서로 크기를 줄이는 방법, alignas·alignof 사용법, pragma pack으로 패딩을 없앨 때의 위험, 캐시 라인 정렬로 멀티스레드 카운터의 False Sharing을 막는 방법을 다룹니다.