#include <iostream>
using namespace std;
int Add(int num1,int num2)
{
return num1+num2;
}
int main ()
{
cout<<Add(3,4);
return 0;
}
이렇게 add함수 연산한 값을 저장할 변수를 선언하지 않아도 컴파일이 되는데
그럼 저기서 Add함수에서 연산한 값은 return했을 때 메모리 어디에 저장이 되남요...?
#include <iostream>
using namespace std;
int Add(int num1,int num2)
{
return num1+num2;
}
int main ()
{
cout<<Add(3,4);
return 0;
}
이렇게 add함수 연산한 값을 저장할 변수를 선언하지 않아도 컴파일이 되는데
그럼 저기서 Add함수에서 연산한 값은 return했을 때 메모리 어디에 저장이 되남요...?
스택에 올라갔다가 사라짐
스택에 생성될 수도 있고, 최적화 레벨에 따라 아예 메모리 할당이 안되고 레지스터 안에만 남아있을 수도 있음
스택,레지스터라는 것은 메모리에 저장되는 거랑은 다른 개념인가요? cpu에 캐쉬메모리처럼 임시저장같은건가
레지스터는 CPU내부의 임시저장소같은 거고, 스택은 스택,힙 같은 키워드로 검색 ㄱㄱ
전부 답변주셔서 감사합니다!
calling convention 쪽 공부해보고.. return은 아마 레지스터 eax 이런거 쓸거야..