🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

쎅..쎽로우 월드 21:36

22.08.03 17:48 작성 조회수 183

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

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

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

채널톡 아이콘