Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Ainimation Blending
- Animation State Machine
- heap tree
- 연속 펄스 부분 수열의 합
- pccp 기출문제 2번
- Hp바
- C#
- dp 알고리즘
- 프로그래머스
- Lv.3
- 9375번
- LayerMark
- Algorithm
- 충돌위험 찾기
- 오브젝트 풀링
- 플레이어 방향전환
- 백준 c++ 9375번
- pccp 기출문제 3번
- dfs
- 플레이어 이동
- 유니티
- 양과 늑대
- Unity
- Lv2
- 2D슈팅게임
- 미로 탈출 명령어
- Blend Type
- CSharp #자료구조
- pccp 기출문제 1번
- Back Tracking
Archives
- Today
- Total
주녘공부일지
[C#] 스택 메모리 & 힙 메모리 본문
1. 스택(Stack) 메모리
지역 변수들과 매개변수들을 담는 메모리 공간
- 메서드를 기준으로 스택프레임으로 묶여 스택에 저장됨
- 스택 자료구조처럼 쌓이는 구조로 후입선출(LIFO) 방식
ex) 실행의 흐름이 메서드에 진입할 때마다 새로운 int가 스택에 할당되며, 메서드에서 벗어날 때마다 해제
static int Factorial (int x)
{
if (x == 0)
return 1;
return x * Factorial (x-1);
}
2. 힙(Heap) 메모리
할당된 객체(참조 형식의 인스턴스)들이 저장되는 메모리 공간
- 런타임에서 new 키워드 등으로 인해 할당된 메모리가 할당되는 공간
ex) 새 객체가 생성되면 힙에 객체가 할당되고 더 이상 참조되지 않는 객체들은 가비지 컬렉터가 해제
using System;
using System.Text;
class Test
{
static void Main()
{
StringBuilder ref1 = new StringBuilder ("object1");
Console.WirteLine (ref1);
// ref1이 참조하는 StringBuilder 객체는 해제 대상
StringBuilder ref2 = new StringBuilder ("object2");
StringBuilder ref3 = ref2;
// ref2가 참조하는 StringBuilder 객체는 해제 대상이 아님
Console.WirteLine (ref3); // object2
}
}
+ C#에서는 객체를 명시적으로 delete 할 수 없음 // 힙 메모리 관리는 가비지 컬렉터가 담당
참고도서) C# 6.0 완벽가이드
'Programming > Definition, Etc' 카테고리의 다른 글
[C#] 인터페이스 ( interface ) (0) | 2023.10.12 |
---|---|
[C#] Object 형식과 박싱&언박싱 (0) | 2023.10.11 |
[C#] 값 형식과 참조 형식 ( + 제네릭 형식, 포인터 형식 ) (0) | 2023.09.29 |
[C#] StringBuilder VS String 연산 성능 비교 (0) | 2023.08.18 |
[C#] 자료구조 ( 제네릭 컬렉션 ) (0) | 2023.03.09 |