본문 바로가기
C++

String literal 스트링 상수는 괄호가 끝나도 사라지지 않아요~

by juheeL 2017. 9. 18.

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