인프런 커뮤니티 질문&답변

starkshn님의 프로필 이미지
starkshn

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

포인터 vs 배열

쎅..쎽로우 월드 21:36

작성

·

238

0

const char* str = "Hello World"; 에서

 

문자열은 .rodata역영에 들어기기 때문에

 

수정이 불가능 한 것은 알겠습니다.

 

그런데

 

char test2[] = "Hello World";의 경우에는 왜

 

readOnly data영역에 들어가지 않았기 때문에

 

Test함수를 통해서  Hello World가 Xello World 로 수정이 가능하다는 것까지는 알겠습니다.

 

그렇다면 test2[] 배열의 "Hello World';는 초기화를 해주면

 

1) test2의 문자열은 스택에 들어가는 것인가요?

 

포인터변수로 가르키면 리터럴이 데이터 영역에 들어가고

 

배열로 초기화를 해주면 스택에 들어가고..

 

2) 문자열 데이터의 메모리위치? 들어갈 메모리의 기준이 헷갈립니다...

 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

네 헷갈리는게 정상입니다.

char test2[] = "Hello World"; 가 꼭 스택에 들어간다기보다는
함수 내부에서 test2를 선언했다면, 스택에 들어가는게 맞습니다.
(한 번 정도는 꼭 메모리를 까보고 확인을 해보시기 바랍니다)

starkshn님의 프로필 이미지
starkshn

작성한 질문수

질문하기