로켈 스택 포인터변수를 반환하면, 포인터변수는 해제되지만, 그 스택 메모리는 해제되지 않는다.

2020. 11. 4. 13:44카테고리 없음

위의 코드는 문제없이 컴파일된다, 실행도 잘 된다.

 

return temp; 후 temp라는 포인터변수 그 자체는 해제된다, => 해당 함수 실행 종료 후, temp라는 변수는

 

다시 재사용 할 수 없다.

 

하지만, temp가 가르키고 있던, 스택메모리가 해제되는것은 아니다. 

 

하지만 quite nullsafe 해보이지는 않는다.

 

함수의 가장 중요한 점이, 재사용성과 독립성인데, 이전에 포스팅 한 것과 같이,

 

어떤 메모리 주소를 인수로 받아서, 이 주소의 역참조나 조작을 시행 한 뒤, 해당 메모리를 반환하는 형태가

 

더 함수의 건전성을 유지하는 것이라 생각된다.

 

예를들어 아래의 함수는 아주 잘 짜여진것이라 사료된다.

 

ofstream& operator<< (ofstream& _cout , const Myclass& ob1){

~~~~

return _cout;

}