<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Heap on Kelly Dev</title><link>https://kelly-chui.github.io/tags/heap/</link><description>Recent content in Heap on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 02 Feb 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/heap/index.xml" rel="self" type="application/rss+xml"/><item><title>OS. Stack, Heap 메모리 관리</title><link>https://kelly-chui.github.io/posts/cs-os-stack-and-heap/</link><pubDate>Sun, 02 Feb 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-os-stack-and-heap/</guid><description>&lt;p&gt;Date: February 2, 2025
Multi-select: Memory&lt;/p&gt;
&lt;h2 id="스택-메모리"&gt;스택 메모리&lt;/h2&gt;
&lt;p&gt;LIFO 구조로, 함수 호출 시 생성되는 스택 프레임(로컬 변수, 파라미터, 반환 주소 등)을 저장한다. 함수가 호출 될 때 마다 새로운 스택 프레임이 쌓이고, 함수가 종료되면 스택 프레임 제거된다.&lt;/p&gt;
&lt;h3 id="특징"&gt;특징&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;빠른 메모리 할당/해제: 스택은 메모리가 자동으로 관리되어서 함수가 끝나면 알아서 메모리가 반환됨&lt;/li&gt;
&lt;li&gt;고정 크기: 스택 메모리는 크기가 제한적이라서 너무 많은 데이터를 저장하면 스택 오버플로우 위험이 있음&lt;/li&gt;
&lt;li&gt;호출 상태 저장: 함수의 매개변수와 지역 값 일부가 스택 프레임에 저장될 수 있음. 실제 저장 위치는 ABI와 컴파일러 최적화에 따라 레지스터나 다른 영역이 될 수도 있음&lt;/li&gt;
&lt;li&gt;스레드별 스택: 각 스레드는 별도의 호출 스택을 가지지만, 이것만으로 함수나 데이터 전체가 thread-safe해지는 것은 아님. 스택에 있는 참조가 공유 객체를 가리킬 수도 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="스택-오버플로우"&gt;스택 오버플로우&lt;/h3&gt;
&lt;p&gt;프로그램이 스택 메모리를 초과할 때 발생하는 오류, 함수 호출 시마다 생성되는 스택 프레임이 쌓이면서 스택 공간을 사용하게 되고, 이 제한된 스택 공간을 초과해서 스택 프레임이 쌓일 경우 발생한다.&lt;/p&gt;</description></item></channel></rss>