
러스트 변수의 지정에서 변수와 객체의 오너십의 문제와 메모리 관리에 대해 Rust, 메모리를 자동으로 제때 해지한다 에서 살펴보았습니다. 여기서는 또하나의 변수에 관한 중요한 기능인 참조에 대해 살펴보려고 합니다. 러스트는 프로그래밍 언어의 개념들을 절묘하게 엮어 기존 언어와는 다른 새로운 규칙의 세계를 만들어 냅니다. 그래서 새로 익혀야 할 개념과 용어, 규칙이 많습니다. 변수는 자기가 가진 객체를 다른 변수에게 참조할 수 있게 빌려줄 수 있습니다. 대여(Borrow)는 말그대로 값에 대한 권한을 일부 빌려주는 것입니다. 그러면 참조 변수는 그 변수를 읽거나 쓸 수 있습니다. 러스트에서 변수와 객체의 관계는 다음과 같이 나누어집니다. 객체에 대한 불변 오너십을 가지는 변수: let name = "lee..

러스트의 등장과 성공으로 메모리 관리, 스택과 힙 등 이슈가 새로 중요하게 조명받고 있습니다. 러스트 공부에 도움이 되었으면 합니다. 프로그램과 메모리 프로그램은 CPU의 레지스터에 메모리에 있는 데이터를 가져와서 계산하고 바꾸고 다시 저장하는 과정을 통해 수행됩니다. 이러한 load와 store가 컴퓨터의 기본 동작입니다. 그런데 컴퓨터에서 수행중인 프로그램은 아주 많으므로 컴퓨터(OS) 관점에서 볼 때 여러 개 프로그램이 필요한 만큼 메모리를 넉넉하게 줄 수는 없습니다. 그래서 컴퓨터는 각 프로그램이 사용하는 메모리를 제한하고 종류를 나누어 규칙에 따라 사용하도록 하고 있습니다. 그래서 메모리는 정적, 스택, 힙 세 종류로 나누어 집니다. 정적 메모리는 코드나 데이터가 저장되는 영역입니다. 프로그램이..

C/C++ 언어는 메모리를 프로그래머가 직접 delete합니다. 모든 메모리를 할당한 역순으로 한 방울도 남기지 않고 해지해야 메모리 리크 없는 프로그램이 됩니다. 그런가하면 여기 저기 흩어져 있는 힙메모리를 가리키는 포인터들은 언제든 댕글링 참조가 될 위험에 노출되어 있습니다. 이것은 정말 사람의 노력이 너무 많이 들어야 하는 무식한 방법이죠. 그런가 하면 자바처럼 또는 대부분의 언어들처럼 프로그래머는 메모리를 쓰기만 하고 해지는 신경 안 쓸래 하는 가비지콜렉션(GC) 모델이 있습니다. 필요하면 언제든 객체를 만들고 아무 생각없이 쓰면 됩니다. 메모리 용량을 넉넉히 늘리는 것이 사람이 직접 손으로 고생하는 것보다 편하고 또 안전하다 라고 자바에서는 주장하고 있지요. 파이썬처럼 아예 응용 프로그램만 만드..
- Total
- Today
- Yesterday
- typedef
- comparable
- max
- contentEquals
- 콜렉션
- 이터레이터
- 패턴
- APPEND
- 동적바인딩
- C++ 클래스
- 이터러블
- zip
- follow
- 스트링
- ToString
- format
- contains
- TypeError
- Camel Style
- 지연계산
- Iterator
- sort key
- python exercise
- Lazy evaluation
- rust
- CompareTo
- indexof
- python example
- 자바regex
- 스트링 +
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |