스트링 리터럴은 선언과 동시에
컴파일러가 rodata 영역에 저장하고, 해당 주소만 따와서 사용하기 때문에 수정이 불가능하다. 정도는 이해하겠는데
왜 굳이 상수 취급해서 rodata 영역에 집어넣는거임?
해킹때문이라기엔, 그냥 문자 배열은 또 스택/데이터 영역에 집어넣잖슴?
왜 그런거??
스트링 리터럴은 선언과 동시에
컴파일러가 rodata 영역에 저장하고, 해당 주소만 따와서 사용하기 때문에 수정이 불가능하다. 정도는 이해하겠는데
왜 굳이 상수 취급해서 rodata 영역에 집어넣는거임?
해킹때문이라기엔, 그냥 문자 배열은 또 스택/데이터 영역에 집어넣잖슴?
왜 그런거??
니가 최고 고수다 질문받아라
https://en.m.wikipedia.org/wiki/Data_segment
memory segment 참고 ㅇㅇ
감사합니다
메모리 아끼려고ㅇㅅㅇ
프로세스당 할당되는 스택/데이터 영역이 전역쪽보다 작아서?
바이트 단위 아끼려고..ㅇㅅㅇ
가상 메모리 주소를 아낀다는 의미?? 문자 배열은 하나하나 다 접근 가능해야하지만, rodata는 하나만 있으면 되니까?
중복되는 문자열을 같은 주소로 참조하게 하니 바이너리 용량, 메모리 사용량 모두 줄어듬ㅇㅅㅇ
다른 영역에서 같은 주소를 참조하니 내용이 수정되면 안되니 리드온리가 됨ㅇㅅㅇ
사실 저위의 링크는 아마 x86구조나 어셈블리어를 공부해본적이 없으면 잘 이해 안될거임. 내가 알기로는 안정성 때문에 그래. 코드 부분도 실행중에 니가 적은 코드가 변경되면 안되니까 리드온리메모리에 저장되잖아. 문자열도 실행중에 저장되면 안전하지 않은 경우가 많기 때문에 애초에 리드 온리 메모리에 저장됨