ㅇㅇ
[%] 러스트에서 String 타입은 힙에 저장됨?
yajok(hazard8241)
2025-09-04 18:16
추천 0
댓글 5
다른 게시글
-
딴건 몰라두 수학은 공부하는거 아닌듯 [7][%] 무관(gaze5749) | 25.09.04추천 2
-
전자정부프레임워크 이거 인텔리제이로 돌릴수 있나요? [4][질문] 익명(211.186) | 25.09.04추천 0
-
c#해라 자바 붙잡지말고 ㄹㅇㅋㅋㅋㅋ [5][%] ㄱㅈㄷ(183.103) | 25.09.04추천 0
-
분산락 검색했는데 뭔 블로그 글들이 [5][%] 익명(211.254) | 25.09.04추천 1
-
서버가 정말 좋다면 서버 엔지니어로 가도 상관없을까요? [4][질문] 00(220.120) | 25.09.04추천 0
-
지금 클라우드페어 터진거임?[%] 익명(118.38) | 25.09.04추천 0
-
글로벌 빅테크 머기업들은 러스트RUST가 대세입니다. [2][%] 익명(218.154) | 25.09.04추천 4
-
미국중국호주뉴질캐나다 전부 엔터프라이즈 앱은 닷넷이 대세임 [3][%] 익명(211.234) | 25.09.04추천 1
-
그동안 한 거[%] 무로주(muroju21) | 25.09.04추천 0
-
대세따라서 C#으로 가는게 맞다 [4][%] 익명(211.234) | 25.09.04추천 2
let s1 = String::from("hello"); let s2 = s1;
이 코드에서 내가 이해를 잘 못 한거 일수도 있겠지만 이해한걸로는 s1은 스택에 저장되고 s2가 힙에 저장된다는거 맞나?
String은 내부적으로 u8 vec 타입이고 vec은 힙에 저장됨 모든 지역변수는 스택에 할당되는데, let s1 = String::new(); 라고 선언하면 s1은 힙에 저장된 String을 참조하게됨 그러니까 C로 치면 포인터를 가지는거지 이 s1을 s2에 대입하면 s1이 가진 포인터가 s2로 넘어가는거임 String은 그대로 힙에 있음
스트링 객체 자체는 스택에 있겠지만 그 객체 내부에 힙에 있는 문자열 데이터를 가리키는 포인터가 있겠지 다른 언어들과 마찬가지로 - dc App
러스트에서 변수가 힙에있냐 스택에 있냐 따지는거는 무의미하지 않나? 소유권 있는애면 이 scope가 끝날때 없어지는거고 레퍼런스면 이 뒤에도 어딘가에 잘 살아계시겠지 정도만 의식하는듯