1
에 변수/기능 평가 I가 다음 코드, seg=b7ffd000
와은 GDB
...
char* seg = mmap(0, ...)
printf("seg=%x\n", seg);
...
프로그램 인쇄합니다. gdb (동일한 실행)에서 p/x seg
을 사용할 때 $2 = 0x0
을 인쇄합니다. 나는 여기서 혼란스러워한다. 그것은 같은 변하지 않습니까 seg
? 왜 값이 다른가?
추신 : mmap
에서 첫 번째 인수는 매핑 된 메모리의 주소이고 반환 값은 매핑 된 메모리의 실제 주소입니다.
최적화 기능을 사용하여 컴파일 중입니까? –
예, -O3을 제거하면 문제가 사라집니다. 이유에 관심이 있습니다. 최적화가 활성화 된 상태에서 메모리의 실제 주소가 어떤 값인지 ... – Richard