클래스 내부의 변수들은 당연히 각각의 메모리 주소를 갖고 소환이 되잖아?
이때 클래스 내부의 함수들은 어떻게 메모리 주소를 할당 받아?
예를들어
int a, b 를 인자로 가지고
void 형을 반환하는 함수 aF bF 두개가 선언된 AClass 클래스를 배열이나 리스트로 5개 만든다고 치면
Aclass[0]
a 메모리주소
b 메모리주소
aF 함수 메모리 공간
bF 함수 메모리 공간
Aclass[1]
a 메모리주소
b 메모리주소
aF 함수 메모리 공간
bF 함수 메모리 공간
Aclass[2]
a 메모리주소
b 메모리주소
aF 함수 메모리 공간
bF 함수 메모리 공간
Aclass[3]
a 메모리주소
b 메모리주소
aF 함수 메모리 공간
bF 함수 메모리 공간
Aclass[4]
a 메모리주소
b 메모리주소
aF 함수 메모리 공간
bF 함수 메모리 공간
이런식으로 함수들이 각각의 클래스 내에서 모두 메모리 내에 자기 자리를 할당 받는거야
아니면,
{
Aclass[0]
a 메모리주소
b 메모리주소
Aclass[1]
a 메모리주소
b 메모리주소
Aclass[2]
a 메모리주소
b 메모리주소
Aclass[3]
a 메모리주소
b 메모리주소
Aclass[4]
a 메모리주소
b 메모리주소
}
Aclass의 aF함수 메모리 공간
bF함수의 메모리 공간.
이런식으로 함수자체는 외부에 별도의 공간이 만들어 져서 외부에 만들어진 함수들을 호출하는 방식이야?
전자라면 존나 비효율 적일테니 당연히 후자일거라 생각은 드는데
포인터 함수라는 개념이 있는거 봐선 또 이게 아잉가 싶어서...
이때 클래스 내부의 함수들은 어떻게 메모리 주소를 할당 받아?
예를들어
int a, b 를 인자로 가지고
void 형을 반환하는 함수 aF bF 두개가 선언된 AClass 클래스를 배열이나 리스트로 5개 만든다고 치면
Aclass[0]
a 메모리주소
b 메모리주소
aF 함수 메모리 공간
bF 함수 메모리 공간
Aclass[1]
a 메모리주소
b 메모리주소
aF 함수 메모리 공간
bF 함수 메모리 공간
Aclass[2]
a 메모리주소
b 메모리주소
aF 함수 메모리 공간
bF 함수 메모리 공간
Aclass[3]
a 메모리주소
b 메모리주소
aF 함수 메모리 공간
bF 함수 메모리 공간
Aclass[4]
a 메모리주소
b 메모리주소
aF 함수 메모리 공간
bF 함수 메모리 공간
이런식으로 함수들이 각각의 클래스 내에서 모두 메모리 내에 자기 자리를 할당 받는거야
아니면,
{
Aclass[0]
a 메모리주소
b 메모리주소
Aclass[1]
a 메모리주소
b 메모리주소
Aclass[2]
a 메모리주소
b 메모리주소
Aclass[3]
a 메모리주소
b 메모리주소
Aclass[4]
a 메모리주소
b 메모리주소
}
Aclass의 aF함수 메모리 공간
bF함수의 메모리 공간.
이런식으로 함수자체는 외부에 별도의 공간이 만들어 져서 외부에 만들어진 함수들을 호출하는 방식이야?
전자라면 존나 비효율 적일테니 당연히 후자일거라 생각은 드는데
포인터 함수라는 개념이 있는거 봐선 또 이게 아잉가 싶어서...
코드영역
그러면 후자와 같이 동작한다는건가여? 코드영역에서 함수부분은 따로 묶어서 한 부분으로 따로 공간으로 마련하고, 저 클래스에서 함수를 호출할땐, 그 호출된 함수 포인터로 불러다 쓰는 형식으로 말이져?
음... 골치아프네. 클래스 내에서 함수를 구현할 경우, 해당 함수는 인라인 함수로 동작하기에 매번 함수가 호출되는 부분마다 메모리가 할당되지만, 클래스 외부에서 함수를 구현하면 해당 함수는 포인터를 가지고 호출될때마다 그 함수의 메모리 영역으로 점프 한다는 듯 한데...
함수가 호출될때마다 메모리가 할당되나니요 ㅋㅋ 아님