char* Func()
{
char* aPtr = "Hello";
return aPtr;
}
void main()
{
cout << Func()<< endl;
}
위 함수 Func가 끝나고 리턴값을 출력하면 null이거나 쓰레기값이어야하는데,
"Hello"가 찍힌다.
지역변수는 그 범위 밖으로 벗어나면 사라져야하는데,
왜 "Hello"는 안 사라지나~~
했더니
"Hello"는 String Literal 스트링 상수인데, 스트링 상수는 데이터 저장위치가 stack, help도 아니고 data에 저장된다 하더라. 그래서 사라지지 않고 남아있다고~
출처 : http://egloos.zum.com/sweeper/v/133866
'C++' 카테고리의 다른 글
[C++/MFC] CString 문제? 출처 모음 (0) | 2021.08.13 |
---|---|
[c++11/c++14] constexpr 정리 (0) | 2017.10.30 |
[비공개]string class 복사 시 참고하면 좋은 내용 (0) | 2017.09.08 |
strcpy strncpy (0) | 2017.07.17 |
strcpy_s 등 _s붙은 것들 특징, 문자열들 (1) | 2017.07.17 |