작성
·
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
네 헷갈리는게 정상입니다.
char test2[] = "Hello World"; 가 꼭 스택에 들어간다기보다는
함수 내부에서 test2를 선언했다면, 스택에 들어가는게 맞습니다.
(한 번 정도는 꼭 메모리를 까보고 확인을 해보시기 바랍니다)