카테고리 없음

Sat Oct 12 10:03PM

개발자오원 2024. 10. 12. 22:04

일단 시작은 글자 출력
일단 출력해보자
첫 에러다

코멘트를 달아 보자면, 일반적으로 그냥 문자열을 부여하면 정적 데이트, 메모리를 고정시킨다. 반면 String::from으로 문자열을 선언하면, 해당 값을 힙 영역에 저장한다. 물론 해당 문자열은 불변 값이라 재할당 할 수는 없다.

mut를 같이 선언문에 넣어주면, 값을 바꿀 수 있다.

 

정적 영역에 메모리를 할당하면, mut가 의미없다고 한다.

그래도 명색이 mut인데, 진짜 값을 못바꿀까?

잘만 된다.

사실 아주 치명적인 차이가 있다. "hello"는 &str, 즉 문자 리터럴 타입이다. 만약 hello_ref 값을 재할당 한다면, 그건 hello_ref라는 포인터가 가리키는 값을 "hello" 에서 "yalo"로 바꾸는 것 뿐이지, 포인터가 가리키는 참조의 값을 변경하는게 아니다.

포인터 자체를 옮기냐, 포인터가 가리키는 값을 바꾸냐 그 차이이다. 아주 큰 차이.

그럼 이제 주도권을 빌려가는 것 또한 이해하기 쉽다. 포인터 헤드를 잠깐 빌려주는 것 뿐이다. 안돌려주면, 해당 포인터가 가리키는 메모리의 회수가 어려워진다잉.

정적 메모리는 오히려 회수하기 쉬워지나보다. 한번쓰고 스코프 밖으로 나가면 메모리 제거를 하면 그만이니깐.