이번 글도 역시 뉴스그룹에서 가져왔습니다. (( c.l.c.m:Returning local variable 그런데 이 질문을 올린 Minkoo Seo라는 이름을 보니 얼마전 댓글을 달아주신 서민구님이네요. :-))) Question #include <iostream> using namespace std; const char *foo() { string f = "fo"; f += "o"; return f.c_str(); } int main() { cout << foo() << endl; // I need const char * here!!! return EXIT_SUCCESS; } 질문은. 위의 코드와 같이 local 변수를 const char*로 리턴하면 괜찮다고 하던데 정말인가요? (어디서 char*로 리턴하는건 안되지만 const char*로 리턴하는건 된다는 내용을 읽은 것 같아요.) 만약 안 괜찮다면 foo()함수는 어떻게 만들어야 할까요? Answer 사실 이 질문들에 대한 답은 간단합니다. 괜찮지 않습니다. local 변수인 string 객체는 이미 파괴되었기 때문에 cout 에서 그 포인터를 읽을 때는 이미 존재하지 않는 객체에 access하는 것이기 때문입니다. 간단히 리턴 타입을 string으로 바꿔주면 됩니다. 물론 리턴할때도 f.c_str() 대신에 그냥 f 를 리턴하면 되겠죠? 이 질문에서 재밌게 생각되는 점은 원래 질문 내용보다는 어디선가 이런 내용을 읽은 것 같다는 내용입니다. 사실 내용은 전혀 다르지만 비슷한 내용이 있지요. 바로 const reference에 대한 casting입니다. 아마 const reference 를 본것을 const pointer로 착각하신건 아닐까 하는 생각이 드네요. 간단히 설명하면 다음과 같습니다. 먼저 아래 코드를 보시죠. class Widget; Widget getWidget(); ...