본문 바로가기

C/Study

[C] 메모리 공간의 할당과 초기화가 동시에 일어나는 상황

반응형

출처 - 열혈 C++ 프로그래밍

#include <stdio.h>

int SimpleFunc(int num);

int main()
{
	int num = 10; // 여기

	SimpleFunc(num);

	return 0;
}

int SimpleFunc(int num) // 여기
{
	return num; // 여기
}

 

이렇게 3군데에서 메모리 공간이 할당되면서 동시에 초기화가 이루어진다. (C++에서 객체도 마찬가지)

main 함수에서 int num = 10; 이 부분이야 당연히 알거고...

int SimpleFunc(int num) 이 부분에서는 함수가 호출되고 매개변수로 선언된 변수들

메모리가 할당됨과 동시에 인자로 받아온 값으로 초기화가 된다.

문제는 SimpleFunc 함수 내부에 있는 return num; 이부분이다.

값을 return 할 때에도 메모리가 할당이 되고 동시에 리턴할 값으로 초기화가 이루어진다.

(조금만 생각하면 당연한 일이다. 예를들어 문자열의 길이를 반환하는 함수를 만든다고 하면 매개변수로는

char *형을 넘겨줄거고 이 문자열의 길이를 세어서 반환은 int형으로 해줄텐데...

함수를 호출한 곳에서 값을 받으려면 어딘가에는 저장이 되어 있어야한다.)

그리고 이때 반환값은 값 복사(Call By Value)로 호출한 곳으로 전달이 된다.

반응형