정처기 감자정처기 감자
공통 기초프로그래밍 기초

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

메모리 구조 (스택, 힙, 데이터 영역)

코딩C언어JavaPython
읽는데 27분 소요
처음 쓰인 날: 2026-02-03
마지막 수정일: 2026-10-04
조회수: —
선수학습(1개)
  • 변수 선언 방법

요약

프로그램의 메모리 구조를 알아봅니다. 스택(Stack)과 힙(Heap)의 차이, 컴파일 시점과 런타임의 메모리 할당 차이를 이해하면 동적 메모리 할당과 Garbage Collection을 쉽게 이해할 수 있습니다.

메모리 구조 핵심 정리

아래에서 하나씩 배울 내용을 미리 정리한 표입니다. "컴파일 시"와 "런타임 시"의 차이가 궁금하다면 컴파일과 런타임의 차이를 참고하세요.

영역저장 내용크기 결정해제 방식
코드(Code)프로그램 코드컴파일 시-
데이터(Data)전역 변수, 정적 변수컴파일 시프로그램 종료 시
스택(Stack)지역 변수, 함수 호출 정보1컴파일 시자동 (함수 종료 시)
힙(Heap)동적 할당 메모리런타임 시수동 (free 호출)

메모리 구조 핵심 정리

아래에서 하나씩 배울 내용을 미리 정리한 표입니다. "컴파일 시"와 "런타임 시"의 차이가 궁금하다면 컴파일과 런타임의 차이를 참고하세요.

영역저장 내용크기 결정해제 방식
코드(Code)바이트코드 (메서드 영역)클래스 로딩 시-
데이터(Data)static 필드, 클래스 메타데이터2클래스 로딩 시프로그램 종료 시
스택(Stack)지역 변수, 메서드 호출 정보1컴파일 시 (프레임 크기)3자동 (메서드 종료 시)
힙(Heap)객체, 배열 (new로 생성)런타임 시자동 (GC가 회수)

메모리 구조 핵심 정리

아래에서 하나씩 배울 내용을 미리 정리한 표입니다.

영역저장 내용크기 결정해제 방식
코드(Code)바이트코드 (.pyc)임포트 시-
데이터(Data)전역 변수, 모듈 레벨 객체런타임 시프로그램 종료 시
스택(Stack)함수 호출 프레임1 (지역 변수의 참조)런타임 시자동 (함수 종료 시)
힙(Heap)모든 객체 (정수, 문자열, 리스트 등)런타임 시자동 (GC가 회수)

프로그램 메모리 구조

C 프로그램이 실행되면 운영체제4가 메모리를 4개 영역으로 나누어 할당합니다.

Java 프로그램이 실행되면 JVM5이 메모리를 여러 영역으로 나누어 관리합니다. 이 페이지에서는 C와 비교하기 쉽도록 코드, 데이터, 힙, 스택의 4영역으로 나누어 설명합니다.6

Python 프로그램이 실행되면 CPython7 인터프리터가 메모리를 관리합니다. Python에서는 모든 값이 객체이므로, 정수나 문자열까지 포함해 대부분의 데이터가 힙에 저장됩니다.

프로그램 메모리 구조
메모리는 코드, 데이터, 힙, 스택 영역으로 나뉩니다. 힙은 위에서 아래로, 스택은 아래에서 위로 자랍니다.

힙과 스택은 메모리의 빈 공간에서 서로 마주보며 자랍니다. 힙은 낮은 주소8에서 높은 주소로, 스택은 높은 주소에서 낮은 주소로 확장되다가 만나면 메모리 부족(Out of Memory) 이 발생합니다.

영역설명
코드 영역실행할 프로그램 코드가 저장됩니다
데이터 영역전역 변수와 static 변수가 저장됩니다
힙 영역malloc()으로 할당한 메모리가 저장됩니다
스택 영역지역 변수와 함수 호출 정보1가 저장됩니다
영역설명
코드 영역컴파일된 바이트코드(메서드 영역)가 저장됩니다
데이터 영역static 필드와 클래스 메타데이터가 저장됩니다
힙 영역new로 생성한 객체와 배열이 저장됩니다
스택 영역지역 변수와 메서드 호출 정보1가 저장됩니다
영역설명
코드 영역컴파일된 바이트코드(.pyc)가 저장됩니다
데이터 영역전역 변수와 모듈 레벨 객체가 저장됩니다
힙 영역모든 객체(정수, 문자열, 리스트 등)가 저장됩니다
스택 영역함수 호출 프레임1과 지역 변수의 참조가 저장됩니다
스택과 힙의 핵심 차이: 크기 결정 시점
스택에 저장되는 데이터는 코드만 보고 크기를 미리 알 수 있습니다 (int는 4바이트, int arr[5]는 20바이트). 힙에 저장되는 데이터는 프로그램이 실행되어야 크기를 알 수 있습니다.

왜 이런 순서일까?

  • 코드/데이터 영역이 낮은 주소8에 있는 이유: 프로그램 시작 시 가장 먼저 로드되고, 크기가 고정되어 있어서 0번부터 순서대로 자리를 잡아둡니다.
  • 힙과 스택이 양 끝에서 자라는 이유: 둘 다 크기가 가변적이므로, 빈 공간을 최대한 활용하기 위해 반대 방향으로 자랍니다.

스택(Stack) 영역

스택 은 함수 호출 정보1와 지역 변수9를 관리하는 영역입니다.

스택 은 메서드 호출 정보1와 지역 변수9를 관리하는 영역입니다. 지역 변수가 기본형이면 값이, 참조형이면 객체를 가리키는 참조값(주소) 이 저장됩니다.

스택 은 함수 호출 정보1와 지역 변수9의 참조(이름) 를 관리하는 영역입니다.

스택의 특징

  • LIFO(Last In First Out): 나중에 들어온 데이터가 먼저 나갑니다. 접시를 쌓을 때 마지막에 올린 접시를 먼저 꺼내는 것과 같습니다.
  • 자동 할당/해제: 함수가 호출되면 할당, 종료되면 자동 해제
  • 크기 고정: 컴파일 시점에 크기가 결정됩니다. int a는 4바이트, int arr[5]는 20바이트처럼 코드만 보면 알 수 있습니다.
c
코드 하이라이팅 중…
func() 프레임 안에 a(int, 10)와 arr(int[5], 원소는 쓰레기값, 주소 100~104)가 있고 함수가 끝나면 프레임째 자동 해제되는 다이어그램
지역 변수 a와 배열 arr는 스택에 잡히고, 함수가 끝나면 자동으로 해제됩니다.
java
코드 하이라이팅 중…
func()의 스택 프레임에 a(int, 10)와 arr(int[] 주소, 주소100)가 있고 arr이 힙의 int[5] 배열을 가리키는 다이어그램
지역 변수 a와 arr은 스택에, new로 만든 배열은 힙에 생깁니다.

위 예시처럼 지역 변수라면 기본형10(int, double 등) 변수에는 값이 직접, 참조형 변수에는 참조값(주소) 만 스택에 저장되고, 객체와 배열 자체는 힙에 생성됩니다.

기본형이라고 항상 스택에 저장되는 것은 아닙니다
기본형/참조형은 '변수에 어떤 종류의 값이 들어가는가'의 구분이고, 어디에 저장되는지는 그 변수가 지역 변수인지, 객체의 필드인지, 배열의 원소인지로 결정됩니다. `int` 필드나 `int[]`의 원소는 객체·배열의 일부이므로 힙에 있고, `String` 필드나 `String[]` 원소의 참조값도 객체·배열 안에 저장됩니다.
java
코드 하이라이팅 중…
func()의 지역 변수 a(10), s(주소100), nums(주소200)는 스택에 있고, Student 객체의 score·name 필드와 int[] 배열의 원소는 힙의 객체·배열 안에 저장되는 다이어그램
지역 변수는 스택에, 필드와 배열 원소는 객체·배열 안(힙)에 저장됩니다.
python
코드 하이라이팅 중…
func() 실행 중 스택 프레임에는 a와 arr의 참조만 있고 정수 10과 리스트 객체는 힙에 있는 다이어그램
지역 변수는 참조만 스택에 두고, 객체는 모두 힙에 만들어집니다.

Python에서는 모든 값이 객체입니다. a = 10이라고 써도 정수 10은 힙에 생성된 객체이고, 스택에는 그 객체를 가리키는 참조(이름) 만 저장됩니다.

스택 오버플로우

스택 크기는 제한되어 있어서, 너무 큰 배열을 선언하거나 재귀 호출이 너무 깊으면 스택 오버플로우(Stack Overflow) 가 발생합니다. 스택 메모리가 한계를 넘으면 운영체제가 프로그램을 강제 종료시킵니다.

c
코드 하이라이팅 중…
bigLocal()의 큰 지역 배열과 끝없이 쌓이는 infinite() 프레임이 스택 한계를 넘어 오버플로우가 나는 두 경우 다이어그램
너무 큰 지역 배열이나 끝나지 않는 재귀는 스택 한계를 넘어 스택 오버플로우를 일으킵니다.
큰 배열이 필요하면 힙에 할당하세요
스택은 보통 1~8MB로 제한됩니다. 큰 데이터가 필요하면 malloc()으로 힙에 할당해야 합니다. 자세한 내용은 동적 메모리 할당 페이지를 참고하세요.

스택 크기는 제한되어 있어서, 재귀 호출이 너무 깊으면 StackOverflowError가 발생합니다.

java
코드 하이라이팅 중…
infinite() 프레임이 스택에 계속 쌓여 한계를 넘고 StackOverflowError가 발생하는 다이어그램
재귀 호출이 끝나지 않으면 프레임이 계속 쌓여 결국 StackOverflowError가 발생합니다.

Java에서는 C와 달리 큰 배열을 선언해도 스택 오버플로우가 발생하지 않습니다. 배열은 항상 힙에 생성되기 때문입니다.

스택 크기는 제한되어 있어서, 재귀 호출이 너무 깊으면 RecursionError가 발생합니다. Python은 기본적으로 재귀 깊이를 1,000회로 제한합니다.

python
코드 하이라이팅 중…
infinite() 프레임이 계속 쌓이다가 재귀 깊이 한도에 도달해 RecursionError가 발생하는 다이어그램
반환하지 않는 재귀는 프레임을 계속 쌓다가 한도를 넘으면 RecursionError로 멈춥니다.

데이터(Data) 영역

데이터 영역은 프로그램이 시작할 때 할당되고, 종료될 때 해제되는 영역입니다. 전역 변수와 static 변수가 이 영역에 저장됩니다.

c
코드 하이라이팅 중…
전역 변수 global(10)과 func() 안의 static 변수 count(0)가 둘 다 데이터 영역에 있는 다이어그램
static 변수는 함수 안에서 선언해도 데이터 영역에 저장되어, 함수가 끝나도 값이 유지됩니다.

static 변수는 함수 안에 선언되어 있지만, 데이터 영역에 저장되어 함수가 종료되어도 값이 유지됩니다.

데이터 영역(메서드 영역)은 JVM이 클래스를 로딩할 때 할당됩니다. static 필드와 클래스 메타데이터가 이 영역에 저장됩니다.

java
코드 하이라이팅 중…
increase() 메서드 코드는 코드 영역에, static 필드 count는 데이터 영역에 하나만 있고 힙의 Counter 객체 두 개가 같은 count를 공유하는 다이어그램
static 필드 count는 클래스 로딩 시 데이터 영역에 하나만 만들어지고 모든 인스턴스가 공유합니다.

static 필드는 객체가 아니라 클래스에 속하는 변수입니다. 모든 인스턴스가 같은 값을 공유합니다.

데이터 영역에는 모듈 레벨(파일 최상위)에서 정의된 전역 변수와 클래스 객체가 저장됩니다.

python
코드 하이라이팅 중…
데이터 영역에 전역 변수 count, 클래스 속성 total을 가진 class Counter, increase() 함수가 있는 다이어그램
모듈 최상위의 전역 변수와 클래스, 함수는 데이터 영역에 저장됩니다.

Python의 클래스 속성은 Java의 static 필드와 비슷하게, 모든 인스턴스가 같은 값을 공유합니다.


힙(Heap) 영역

힙 은 프로그래머가 직접 관리하는 동적 메모리 영역입니다.

힙의 특징

  • 런타임 할당: 프로그램 실행 중에 크기 결정 가능
  • 수동 관리: malloc()으로 할당, free()로 해제 (#include <stdlib.h> 필요)
  • 유연한 크기: 스택보다 훨씬 큰 데이터도 저장 가능 (시스템 메모리만큼)
c
코드 하이라이팅 중…
스택의 포인터 p(값 10000)가 힙에 malloc으로 할당한 int 1,000,000개 블록(주소 10000~)을 가리키는 다이어그램
스택의 p에는 힙 블록의 시작 주소만 저장되고, 블록은 free(p)를 호출해야 반환됩니다.

메모리 누수

free()를 호출하지 않으면 메모리 누수(Memory Leak) 가 발생합니다.

메모리 누수란? malloc()으로 할당받은 메모리를 free()로 반환하지 않아서, 더 이상 사용하지 않는 메모리가 힙에 계속 쌓이는 현상입니다.

c
코드 하이라이팅 중…
leak()을 3번 호출한 뒤 힙에 아무도 가리키지 않는 400바이트 블록 3개가 누수로 남은 다이어그램
p가 사라진 뒤에도 해제하지 않은 블록은 힙에 남아 계속 쌓입니다.

왜 문제가 되나요?

상황결과
단발성 프로그램종료 시 OS가 모든 메모리 회수 → 큰 문제 없음
장시간 실행 (서버, 게임 등)메모리가 계속 쌓여서 시스템이 느려지거나 다운

메모리 누수 방지: malloc() 호출 횟수와 free() 호출 횟수가 항상 일치해야 합니다.

c
코드 하이라이팅 중…
malloc 직후, free(p) 후, p = NULL 후의 3단계로 p가 가리키는 대상이 바뀌는 다이어그램
free(p) 뒤에도 p에는 옛 주소가 남아 있으므로 NULL로 초기화하는 것이 안전합니다.

힙 은 new 키워드로 생성한 모든 객체와 배열이 저장되는 영역입니다.

힙의 특징

  • 런타임 할당: 프로그램 실행 중에 객체 생성
  • 자동 관리: Garbage Collector(GC)가 미사용 객체를 자동 회수
  • 모든 객체가 힙에 저장: new로 생성한 것은 모두 힙에 위치
java
코드 하이라이팅 중…
스택의 name과 scores가 힙의 String 객체와 int[100] 배열을 가리키고 문자열 풀에는 리터럴 gamja가 따로 있는 다이어그램
new로 만든 String 객체와 배열은 힙에 생기고, 스택의 변수에는 참조값만 저장됩니다.

Java에서는 C와 달리 free()를 호출할 필요가 없습니다. Garbage Collector가 더 이상 참조되지 않는 객체를 자동으로 회수합니다.

String 리터럴은 힙 내부의 String Pool 이라는 특별한 공간에 저장됩니다. 자세한 내용은 문자열의 기초를 참고하세요.

힙 은 Python의 모든 객체가 저장되는 영역입니다. 정수, 문자열, 리스트, 딕셔너리까지 전부 힙에 생성됩니다.

힙의 특징

  • 런타임 할당: 프로그램 실행 중에 객체 생성
  • 자동 관리: Reference Counting + GC가 미사용 객체를 자동 회수
  • 모든 것이 객체: 숫자, 문자열, 함수까지 전부 힙에 저장
python
코드 하이라이팅 중…
func() 프레임의 name, scores, count가 힙의 str, list, int 객체를 참조하는 다이어그램
Python에는 기본형이 없어서 숫자 42도 힙의 int 객체입니다.

Python에서는 C/Java와 달리 기본형(primitive type)이 없습니다. 42조차 int 객체이며 힙에 저장됩니다. 다만 자주 사용하는 작은 정수(-5 ~ 256)는 미리 캐싱해두어 재사용합니다.


스택 vs 힙 비교

스택과 힙 비교
스택은 자동으로 관리되고, 힙은 malloc/free로 수동 관리합니다.
구분스택힙
할당 방식자동malloc()
해제 방식자동 (함수 종료)free() 호출
크기 결정컴파일 시런타임 시
속도빠름 (포인터만 이동)느림 (빈 공간 탐색)
크기 제한작음 (보통 1 ~ 8MB)큼 (시스템 메모리)
사용 예지역 변수, 배열동적 배열, 연결 리스트
구분스택힙
저장 대상지역 변수 (기본형 값, 참조값)객체, 배열 (필드·원소 포함)
할당 방식자동new 키워드
해제 방식자동 (메서드 종료)GC가 자동 회수
크기 결정컴파일 시 (프레임 크기)3런타임 시
속도빠름 (포인터만 이동)느림 (빈 공간 탐색)
스레드 공유스레드마다 별도모든 스레드가 공유
구분스택힙
저장 대상함수 호출 프레임, 참조(이름)모든 객체 (정수, 문자열, 리스트 등)
할당 방식자동 (함수 호출 시)자동 (객체 생성 시)
해제 방식자동 (함수 종료)GC가 자동 회수
크기 제한재귀 깊이 1,000회 (기본값)시스템 메모리

컴파일 시점 vs 런타임

일반 변수와 배열은 컴파일할 때 크기가 결정되고, 동적 메모리는 런타임(실행 중) 에 결정됩니다. 자세한 내용은 컴파일과 런타임의 차이를 참고하세요.

c
코드 하이라이팅 중…
스택에 크기가 고정된 arr(int[10])와 n(5), p가 있고 p가 런타임에 n개 크기로 할당된 힙 블록을 가리키는 다이어그램
arr의 크기는 컴파일할 때, p가 가리키는 블록의 크기는 실행 중 입력된 n으로 정해집니다.

동적 메모리 할당을 사용하면 사용자 입력이나 조건에 따라 실행 중에 크기를 결정할 수 있습니다.


왜 동적 메모리 할당이 필요한가?

크기를 미리 알 수 없는 경우

c
코드 하이라이팅 중…
count에 3을 입력했을 때 data가 힙의 int 3칸 블록을 가리키는 다이어그램
입력받은 count만큼 실행 중에 힙 공간을 확보합니다.

큰 데이터를 저장해야 하는 경우

c
코드 하이라이팅 중…
스택에는 포인터 bigArray 하나만 있고 약 4MB인 int 1,000,000칸 배열은 힙에 있는 다이어그램
큰 배열은 힙에 두고, 스택에는 시작 주소를 담은 포인터만 둡니다.

유연한 자료구조 구현

연결 리스트처럼 크기가 변하는 자료구조는 동적 메모리 할당이 필수입니다.

c
코드 하이라이팅 중…
스택의 newNode가 힙에 할당된 struct Node 블록을 가리키는 다이어그램
노드가 필요할 때마다 malloc()으로 힙에 하나씩 만들 수 있습니다.

다음 단계

메모리 구조를 이해했다면, 동적 메모리 할당에서 malloc()과 free() 함수의 구체적인 사용법을 학습하세요.


Garbage Collection (가비지 컬렉션)

Java는 C와 달리 프로그래머가 메모리를 직접 해제하지 않습니다. Garbage Collector(GC) 가 힙 영역에서 더 이상 참조되지 않는 객체를 자동으로 찾아서 회수합니다.

java
코드 하이라이팅 중…
name = null 이후 참조가 끊긴 힙의 String 객체가 GC 회수 대상이 되는 다이어그램
더 이상 참조되지 않는 객체는 GC가 회수할 수 있으며, 회수 시점은 JVM이 결정합니다.

C와의 차이점

구분CJava
메모리 해제free() 수동 호출GC가 자동 회수
메모리 누수free() 누락 시 발생GC 덕분에 거의 발생하지 않음
개발 편의성메모리 관리에 신경 써야 함메모리 관리를 JVM에 위임
GC가 있어도 메모리 누수가 발생할 수 있습니다
객체를 더 이상 사용하지 않으면서도 참조를 유지하면 GC가 회수하지 못합니다. 예를 들어, 리스트에 객체를 계속 추가만 하고 제거하지 않으면 메모리가 계속 증가합니다.

다음 단계

Java의 메모리 구조를 이해했다면, 문자열의 기초에서 String Pool과 == vs equals() 비교를 학습하세요.


Garbage Collection (가비지 컬렉션)

Python은 Reference Counting(참조 카운팅) 을 기본 메모리 관리 방식으로 사용합니다. 객체를 참조하는 변수가 0개가 되면 즉시 메모리를 해제합니다.

python
코드 하이라이팅 중…
name 생성, alias = name, alias = None, 함수 종료 4단계에서 객체의 참조 카운트가 1, 2, 1, 0으로 바뀌는 다이어그램
참조가 생기면 +1, 끊기면 -1이 되고, 0이 되는 순간 객체가 해제됩니다.

id() 함수로 객체 확인하기

id() 함수는 객체의 메모리 주소(고유 식별자) 를 반환합니다. 두 변수가 같은 객체를 가리키는지 확인할 수 있습니다.

python
코드 하이라이팅 중…
b는 a와 같은 리스트를 공유하고 c는 값이 같은 별도 리스트인 다이어그램
b = a는 같은 객체를 함께 보고, 같은 값으로 새로 만든 c는 다른 객체입니다.

C, Java와의 차이점

구분CJavaPython
메모리 해제free() 수동 호출GC가 자동 회수Reference Counting + GC
메모리 누수free() 누락 시 발생거의 발생하지 않음거의 발생하지 않음
기본형 값의 저장 위치지역 변수면 스택지역 변수면 스택, 필드·배열 원소면 객체 안(힙)힙 (모든 것이 객체)

다음 단계

Python의 메모리 구조를 이해했다면, 문자열의 기초에서 인덱싱, 슬라이싱 등 Python 문자열 핵심 개념을 학습하세요.

연습 문제

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.

Footnotes

  1. 함수(메서드) 호출 정보란 함수가 호출될 때 스택에 쌓이는 데이터를 말합니다. 매개변수, 지역 변수, 그리고 함수 실행이 끝난 뒤 돌아갈 위치(리턴 주소)가 하나의 스택 프레임(Stack Frame) 으로 묶여 저장됩니다. 함수가 종료되면 해당 프레임이 스택에서 제거됩니다. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9

  2. 클래스 메타데이터란 클래스 자체의 정보(클래스 이름, 필드 목록, 메서드 목록 등)를 말합니다. 객체를 만들기 위한 "설계도 정보"라고 생각하면 됩니다. ↩

  3. Java 컴파일러는 메서드마다 지역 변수 칸 수와 피연산자 스택 크기를 미리 계산해 바이트코드에 기록합니다. 그래서 스택 프레임의 크기는 컴파일 시 정해지지만, 프레임 자체는 메서드가 호출될 때 스택에 만들어집니다. ↩ ↩2

  4. 운영체제(OS)는 Windows, macOS, Linux 같이 컴퓨터의 하드웨어를 관리하고, 프로그램이 실행될 수 있는 환경을 제공하는 소프트웨어입니다. ↩

  5. JVM(Java Virtual Machine)은 Java 프로그램을 실행하는 가상 머신입니다. Java 소스 코드는 컴파일러가 바이트코드(.class)로 변환하고, JVM이 이 바이트코드를 해석하여 운영체제 위에서 실행합니다. 덕분에 같은 Java 코드가 Windows, Mac, Linux 어디서든 동작합니다. ↩

  6. JVM 규격의 실제 런타임 영역은 메서드 영역, 힙, JVM 스택 등으로 정의되며 C의 메모리 구조와 똑같지는 않습니다. 여기서는 C와 비교하기 위해 단순화한 구분입니다. ↩

  7. CPython은 Python의 공식 표준 구현체로, C 언어로 작성된 인터프리터입니다. python 명령어로 실행하면 기본적으로 CPython이 동작합니다. Python 코드를 바이트코드(.pyc)로 변환한 뒤 이를 해석하여 실행하며, 메모리 관리에 참조 카운팅(Reference Counting) 방식을 사용합니다. ↩

  8. 메모리 주소란 메모리의 각 칸에 붙은 고유 번호입니다. 0번, 1번, 2번... 순서대로 번호가 매겨져 있고, "낮은 주소"는 0에 가까운 번호, "높은 주소"는 큰 번호를 의미합니다. ↩ ↩2

  9. 지역 변수란 함수(메서드) 안에서 선언된 변수입니다. 함수가 호출될 때 생성되고, 함수가 종료되면 자동으로 사라집니다. 함수 바깥에서는 접근할 수 없습니다. ↩ ↩2 ↩3

  10. 기본형(Primitive Type)은 int, double, char, boolean 등 값 자체를 직접 저장하는 자료형입니다. 반대로 String, int[], 클래스 객체 등은 참조형(Reference Type)으로, 변수에는 객체를 가리키는 참조값(주소)만 저장되고 객체 자체는 힙에 생성됩니다. 참조형 변수가 지역 변수면 그 참조값은 스택에, 필드나 배열 원소면 그 객체·배열 안(힙)에 저장됩니다. ↩


메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(3개)
  • C언어 포인터의 기초
  • C언어 동적 메모리 할당 (malloc, free)
  • static 키워드 - C언어와 Java 비교
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999