| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 벡터
- 스택
- map
- list
- 리스트
- 자료구조
- 해쉬맵
- 공부
- 프래그멘테이션
- c#
- 힙영역
- static_cast
- 배열
- thread
- rookiss
- 스택영역
- 트리
- std::unordered_map
- 차이점
- Queue
- 큐
- std::map
- 객체지향
- vector
- 기술면접
- 반복문
- 멀티쓰레드
- 알고리즘
- MonoBehaviour
- 인프런
- Today
- Total
호빵의 IT 개발소
[C#] 스택과 힙 본문
stack - 스택은 후입선출 방식의 자료구조라고 불리며, 영어로는 LIFO(Last-In, First-Out) 구조의 자료구조라고도 불립니다. stack은 함수에 선언되었던 값 형식은 함수를 빠젼가게 되면 자동으로 메모리에서 사라집니다.(정적 메모리 할당)
예)
//색깔 공을 공 주머니에 순서대로 넣는다. 삽입 : Push
빨간 공 -> 파랑 공 -> 초록 공 -> 흰색공
//꺼낼때는 들어간 순서의 역순으로 나온다. 삭제 : Pop
흰색 공 -> 초록 공 -> 파랑공 -> 빨간 공
heap - 스택과 반대되는 개념을 가지고 있습니다. heap에서는 new를 사용하여 생성한 값들을 메모리에 저장합니다.
(동적 메모리 할당)
class Knight //참조
{
public int hp;
public int attack;
public void Move()
{
Console.WriteLine("Knight Move");
}
public void Attack()
{
Console.WriteLine("Knight Attack");
}
}
struct Mage //복사
{
public int hp;
public int attack;
}
class Program
{
static void KillMage(Mage mage)
{
mage.hp = 0;
}
static void KillKnight(Knight knight)
{
knight.hp = 0;
}
static void Main(string[] args)
{
Mage mage;
mage.hp = 100;
mage.attack = 50;
killMage(mage);
Knight knight = new Knight(); //Knight 객체를 생성(class knight에 접근 가능)
knight.hp = 100;
knight.attack = 10;
killKnight(knight);
}
}
위 예시 프로그래밍을 보면 mage같은 경우에는 구조체(복사 타입)으로 만들고 knught는 참조타입을 만들었습니다.
mage - 복사 ->실제 메모리 안에 본체가 들어가있다. (int attack, int hp, 8바이트)
knight - 참조 -> 주소가 들어간다. 컴퓨터 사양에 따라 컴퓨터가 32비트면 32비트가 되고 64비트에서 실행하면 64비트가 됩니다. 주소안에는 실제 본체가 있는 메모리의 주소를 나타낸다. (ㅣ
---------------------------------------------------------------------------------------------------------------------------
참고 : [인프런] Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
'C#, 유니티 > C# 기초' 카테고리의 다른 글
| [C#] 상속성 (0) | 2022.01.03 |
|---|---|
| [C#] static (0) | 2022.01.03 |
| [C#] 복사와 참조 (0) | 2022.01.02 |
| [C#] 객체지향 기본 (0) | 2022.01.02 |
| [C#] 15. 오버로딩 (0) | 2021.12.31 |