// 참조 대상
int n = 4;
// n과 같은 공간에 살고있는 a.
int &a = n;
// n의 주소를 가지고 있는 a.
int a = &n;
int summary(){
int n = 4;
return n;
}
int main() {
int *nn = summary(); //오류 발생!!
return 0;
}
summary에서 발생된 n을 넘겨주고 싶지만 n은 summary의 함수가 끝나는 동시에 메모리에서 삭제가 된다. 그렇기 때문에 n을 계속 살려주고싶으면, n을 new연산자를 통해서 힙영역으로 이동 시켜야된다.
#include <iostream>
int* summary(){
int *n = new int;
*n = 4;
return n;
}
int main() {
int *nn = summary();
std::cout << nn;
std::cout << *nn;
return 0;
}
summary로부터 전달받은 n은 그대로 살아있다.