본문 바로가기
개발 공부

[call by value, call by reference] feat. stack 영역, heap 영역

by 도됐좋 2023. 6. 20.
순서
1. 인수 전달 방법
2. call by value
3. call by reference
4. Java의 call by value

 

인수 전달 방법

- 함수 호출 시 인수를 전달하는 방법은 크게 두 가지가 존재

- 변수가 가진 값을 복사하여 전달 → call by value

- 변수에 대한 주소값을 전달 → call by reference


 

✅ Call By Value

- 변수의 값만 복사하여 전달하기 때문에,

   호출한 곳에서 값을 변경해도 원래 변수에는 영향이 없음

call by value 예시

 


 

✅ Call By Reference

- 변수의 주소값 자체를 전달하기 때문에,

   호출한 곳에서 값을 변경하면 원래 변수도 변경됨

call by reference 예시
**stack 영역

  : 지역 변수와 함수 호출을 저장하는데 사용되는 메모리 영역

  : LIFO(Last In, First Out) 구조

  : 고정된 크기를 가지며 운영체제에 의해 관리됨

 

**heap 영역

  : 프로그램 실행 중 동적으로 할당된 데이터를 저장하는데 사용되는 메모리 영역

  : 메모리의 정렬되지 않은 집합

  : 동적인 크기를 가지며 프로그래머에 의해 관리됨

 


 

✅ Java의 Call By Value

- 자바에는 call by reference가 없음

- 자바에서 매개변수는 값이 복사되거나, 주소값이 복사되는 call by value로서 동작

- 포인터를 사용할 수 있는 C언어와 다르게 자바는 포인터를 철저하게 숨겨서

  개발자가 직접 메모리 주소에 접근하지 못하게 되어있음

 

'개발 공부' 카테고리의 다른 글

[SVN vs Git] feat. 형상 관리 툴  (0) 2023.08.03
[기본 타입, 래퍼 클래스] feat. 박싱, 언박싱  (0) 2023.06.20
[HTTP, 웹소켓] feat. AJAX  (0) 2023.06.13
[FTP, SFTP] feat. SSH  (0) 2023.06.01
[OSI 7계층, TCP/IP 4계층]  (0) 2023.06.01