문자열 상수는 어디에 저장될까?

2020. 6. 22. 15:47프로그래밍/Note

수업 중 문자열 상수는 Data 영역에 저장된다는 이야기를 듣고

모든 문자열 상수, 막 썼던 "Hello World" 라던가 전부 Data 영역에 저장되는거야? 라는 의문이 들어 정리

 

결론은 상황에 따라(컴파일러의 성능에 따라) 이럴수도 있고 저럴수도 있고

 

 

개념적으론

 

char szB[] = "Hello World";

문자 배열의 초기화리스트로 사용할 때는 스택에 할당되고

 

char* szA = "Hello World"; 

이런식으로 쓸 때는 Data 영역에 저장된 문자열 상수의 포인터(const char*)를 받아온다고 생각하는게 속편할 듯 싶다.

 

 

실제로 언제 어떻게 할당하냐 마냐는 컴파일러가 똑똑하게 알아서 처리해주겠지~


참고)

 

https://kid5.tistory.com/233

 

문자열 상수는 어디에 저장될까?

https://stackoverflow.com/questions/7943628/where-will-a-constant-string-be-stored-in-memory 1. char * szA = "abc"; 이때의 "abc"는 const char 문자열 상수로 DATA에 저장된다. 즉 static과 같은 느낌으로..

kid5.tistory.com

 

'프로그래밍 > Note' 카테고리의 다른 글

Analysis of Platformers  (0) 2020.07.12
구글 C++ 스타일 가이드 (feat. 전방선언)  (0) 2020.07.10
코드 읽기  (0) 2020.06.30
클래스의 크기  (0) 2020.06.23
Security Features in the C Run-Time Libraries (CRT)  (0) 2020.06.22