가능한 중복 : 주소 비교 및 문자열 저장
How are string literals compiled in C?
objdump를 보았을 때 나는 hello라는 문자열을 볼 수 없었습니다. 나는 변수를 저장하지 않았지만 "hello"가 저장되는 위치는 알았습니다.
스택에 저장됩니까 ?? 또는 코드 세그먼트에 저장됩니까 ??
#include<stdio.h>
int main()
{
if ("hello" == "hello")
printf("\n equal ");
else
printf("\n not equal");
return 0;
}
if 조건을 if ("hello" == "hell1")
으로 변경하면 "같지 않음"이 인쇄됩니다. 다시 말하지만 문자열이 저장되는 위치와 방법. 스택에 저장됩니까 ?? 또는 코드 세그먼트에 저장됩니까 ??
여기 누군가 내가 정교한 답을 주면 정말로 감사 할 것입니다. 감사합니다.
, 당신은 더'해당 if' 전혀 없다는 것을 알 수 있습니다! 최적화 됨! –
[A 기본 질문 : C에서 문자열 리터럴은 어떻게 컴파일됩니까?] (http : //stackoverflow.com/q/6680819/) [http : //stackoverflow.com/q/6680819/] [C에서 "a"! = "a"인 이유는 무엇입니까?] : //stackoverflow.com/q/4843640/), [C 문자열 리터럴 : 그들은 어디로 갈거야?] (0120)을 참조하십시오. – outis