만약에 제가 구조체 A에 대해 *A를 반환하는 함수 B를 만들었고, 함수 B의 내용은 구조체 A를 'C := A{...}'으로 초기화해주고 &C를 반환하는거라고 했을 때, 함수 B를 main에서 'D := B()'처럼 사용하면, C언어에서 malloc으로 할당했을 때야 힙에 할당되니까 주소 값 참조가 일어나겠지만 golang에서는 :=로 할당했으니 함수 B의 스택에 할당되어 있던 거니까 함수 B가 끝나면서 스택은 회수될 것이고, 어쩔 수 없이 C에서 D로는 변수 값 복사가 일어나는 거지 주소 값 참조는 안되는 것 맞나요? C언어에서 malloc으로 일단 주소값 프린트해서 비교했을 때 다르게 나오긴 했는데, 제가 이해한게 맞는 지 여쭤보고자 질문드립니다.
[질문] go 메모리 참조 질문
익명(211.221)
2022-06-28 02:16
추천 0
댓글 3
다른 게시글
-
이펙티브 c++읽는데 머리 너무아픔 [2][%] 익명(218.237) | 22.06.28추천 0
-
c++은 copy와 move는 lvalue rvalue로 구분함 [2][%] 익명(211.206) | 22.06.27추천 4
-
fzSftp started 서버 연결 끊어지는데 무슨 뜻인가요? [2][질문] 익명(122.40) | 22.06.27추천 1
-
js 콜스택은 스택메모리에 저장됨?? [10][질문] 익명(116.251) | 22.06.27추천 0
-
고채널이나 c# task 같은 비동기 모델들 질문 [19][질문] 익명(117.111) | 22.06.27추천 1
-
vim+터미널 개발환경이랑 제일 궁합 좋은 언어가 뭐같음? [9][질문] 익명(223.38) | 22.06.27추천 0
-
비전공충 자스 vs 자바 뭐해야함? [6][질문] 익명(211.199) | 22.06.27추천 1
-
c++ 하는데 복사냐 이동이냐 왜이리 복잡하냐 [8][질문] 익명(106.101) | 22.06.27추천 0
-
웹개발 포트폴리오 프로젝트에 크롤링 기능 넣으면 좀 그러냐 [2][질문] 익명(223.38) | 22.06.27추천 0
-
방화벽 포트가 안 열리는 이유가 뭘까 모든 시도 다 해봄 [5][질문] 익명(211.117) | 22.06.27추천 0
로컬변수 포인터를 리턴하는 패턴을 go compiler가 분석(escape analysis) 과정에서 발견하게 되면 그 변수가 처음부터 힙에 생기도록 변경한다. value copy가 아니라 pointer copy가 맞음
헉 그럼 두개 주소값이 다르게 나오는 건 제가 뭔가 잘못한거군요... 답변 감사합니다!
예제코드 올려줄 수 있나...