0
가능한 중복 : 여기
C String literals: Where do they go?메모리의 어느 부분에 문자열이 저장됩니까?
내가 인터뷰에서 분석하도록 요청 된 C 코드의 조각이다.
int main() {
char *ptr = "hello";
return 0;
}
"hello"문자열은 메모리의 어느 부분에 저장됩니까?
가능한 중복 : 여기
C String literals: Where do they go?메모리의 어느 부분에 문자열이 저장됩니까?
내가 인터뷰에서 분석하도록 요청 된 C 코드의 조각이다.
int main() {
char *ptr = "hello";
return 0;
}
"hello"문자열은 메모리의 어느 부분에 저장됩니까?
이것은 구현에 따라 다르며 표준에 의해 지정되지 않았습니다. 특정 컴파일러에 대한 설명서를 참조하여 배치 위치를 결정해야합니다.
일반적으로 컴파일러는 코드 세그먼트와 같은 읽기 전용 데이터 세그먼트에 문자열 리터럴을 배치합니다. 이를 통해 여러 개의 다른 문자열 리터럴을 공유 할 수있는 단일 메모리를 사용하여 프로그램에 인코딩 할 수 있습니다. 또한 문자열 리터럴을 내부 읽기 전용으로 수정하려고 시도하는 것은 잘못된 생각입니다. 읽기 전용 세그먼트에 쓰기 때문에 세그먼트 오류가 종종 발생하기 때문입니다. 이것은 보장 된 것은 아니지만 종종 이렇게 구현됩니다.