태그: memory
8편
-
브라우저 DevTools 가이드 — Performance·Memory·Network·Sources 심화
Chrome DevTools Performance 플레임 차트에서 롱 태스크와 레이아웃 스래싱을 찾고, 힙 스냅샷 비교로 Detached DOM 누수를 추적하며, Network 워터폴 단계와 조건부·로그포인트·XHR 브레이크포인트를 활용하는 법을 설명합니다.
-
Go 슬라이스 심화: 메모리 할당 방식, append 성장, 복사와 참조, 성능 최적화와 함정
Go 슬라이스 헤더가 가리키는 백킹 배열이 make와 append에서 어떻게 할당되고 용량이 어떤 규칙으로 늘어나는지 설명합니다. 사전 할당과 인덱스 대입으로 성능을 높이는 법, 필터·청크 분할 패턴, 작은 슬라이스가 큰 배열을 붙잡는 메모리 누수를 다룹니다.
-
C++ use-after-free: 해제 후 사용이 생기는 패턴과 ASan·gdb로 추적하기
delete 후 포인터 사용, 지역 변수를 가리키는 참조 반환, 벡터 재할당으로 무효화된 반복자, 람다가 캡처한 소멸된 객체처럼 Use After Free가 생기는 패턴을 예제로 보여줍니다. ASan과 gdb로 추적하는 법과 스마트 포인터로 막는 법도 다룹니다.
-
C++ 스택 할당자 구현: bump pointer, LIFO 해제, pmr::monotonic_buffer_resource와 비교
고정 버퍼 위에 bump pointer로 쌓는 C++ 스택 할당자 구현법과 LIFO 해제·용량 제약, std::pmr::monotonic_buffer_resource·메모리 풀과의 비교를 정리합니다.
-
C++ 객체 수명과 저장 기간: 생성·소멸 순서, 임시 객체 수명, 댕글링 참조
C++ 객체 수명(lifetime)과 저장 기간(자동/정적/동적/스레드)의 차이, 생성·소멸 순서 규칙을 실전 예제로 정리합니다. 댕글링 참조·정적 초기화 순서 대란·임시 객체 수명 함정과 RAII·스마트 포인터 해법까지 다룹니다.
-
C++ 힙 손상: 버퍼 오버플로우·이중 delete·use-after-free 원인과 ASan·Valgrind 탐지
C++ 힙 손상이 버퍼 오버플로우, 이중 delete, delete/delete[] 혼용, use-after-free로 발생하는 원리를 힙 메타데이터 구조로 설명합니다. AddressSanitizer·Valgrind 탐지법과 스마트 포인터·RAII 방지책까지 다룹니다.
-
C++ Flyweight 패턴: 공통 상태를 공유해 텍스트·타일·파티클 메모리 줄이기
C++ Flyweight 패턴으로 공통 상태(intrinsic)를 공유하고 개별 상태(extrinsic)만 따로 두어 메모리를 줄이는 방법. 텍스트 렌더링, 게임 타일, 파티클 시스템 예제와 캐시 수명·동시성 문제를 다룹니다.
-
C++ 버퍼 오버플로우: strcpy·오프바이원 실수가 생기는 원리와 방지·탐지 방법
strcpy·gets·sprintf처럼 경계를 검사하지 않는 함수와 오프바이원 실수가 어떻게 버퍼 오버플로를 일으키는지 예제로 보여 주고, snprintf·std::string 같은 대안, AddressSanitizer 탐지, 스택 보호 컴파일러 옵션으로 막는 방법을 설명합니다.